• Книга по программированию, оказавшая наибольшее влияние

    @korvindest
    Фаронов «Учебник: Турбо Паскаль 7.0»
    Эту книгу я сам купил в девятом классе и именно с нее началось мое движение в мир программирования. Данный экземпляр весь проклеенный скотчем до сих пор храню на полке, на память.
    Ответ написан
    4 комментария
  • Книга по программированию, оказавшая наибольшее влияние

    @fllln
    Code Complete, на 1/6 части суши также известная как Совершенный Код.
    Ответ написан
    Комментировать
  • Какой планшетник купить?

    @Elkaz
    Asus Transformer :)

    Взял себе в августе, радуюсь. Больше всего радует возможность подключения физической клавиатуры, и тогда планшет превращается уже в полноценный нетбук с Андроидом на борту. Зарядку держит до 14-и часов у меня (вместе с док станцией). В режиме ожидания (но с включенным Wi-Fi и синхронизацией всего что можно).

    Рассматривал HTC Flyer, Acer, iPad. Не понравилось. А тут не жалею :)
    Ответ написан
    2 комментария
  • Нетбук полностью совместимый с MacOsX?

    Lordick
    @Lordick
    первая ссылка в гугл — www.mymacnetbook.com/compatibility-chart/
    Ответ написан
    Комментировать
  • Нужны ли статьи о Yii?

    rakot
    @rakot
    Да и побольше примеров, документация на сайте отличная, а вот с примерами засада.
    Ответ написан
    Комментировать
  • Нужны ли статьи о Yii?

    Только если они будут не для новичков.
    Все предложенные статьи сводиться к парочке строк кода, это не интересно тем более они описаны в документации и неплохо разжеваны.
    Вот если бы что то из серии:
    • Модели для динамических форм и их валидация.
    • Права доступа на основе списков к объектам (ACL).
    • Обертка над jqGrid которая будет принимать CDataProvider, а интерфейс как у CGridView.
    • Единая авторизация для Yii с поддержкой нескольких сервисов.
    Ответ написан
    3 комментария
  • Нужны ли статьи о Yii?

    Bublik
    @Bublik
    Web & Mobile developer, Head of Mobile department
    Будут интересны
    Ответ написан
    Комментировать
  • Как в корпус настольного компьютера крепить SSD?

    philpirj
    @philpirj
    У меня в комплекте шли салазки, шнуры питания, SATA итп. Валяется ненужное. СПб.
    Ответ написан
    1 комментарий
  • [Apache] Файлы из запароленной директории доступны по прямым ссылкам?

    100% перед апачем стоит nginx )))) и он плевал на всякие запреты в .htaccess
    Ответ написан
    1 комментарий
  • Разработка мессенджера

    fenrirgray
    @fenrirgray
    Выбора особого нет это или ejabberd, openfire или tigase. Можете посмотреть сюда: en.wikipedia.org/wiki/Comparison_of_XMPP_server_software
    Первый — наиболее распространен. Он быстрый, классно распаралелливается(не зря на erlang написан) и поддерживает весьма обширное количество ХЕРов. Основной недостаток — мало кто знает erlang)
    Openfire — удобная настройка, всякие гуи и прочая, но сильно проседает производительность при большой нагрузке. Идеален для небольших сетей.
    tigase — так же как и openfire написан на яве, но куда лучше масштабируется, да и вообще пишется именно с упором на производительность. С другой стороны в последний раз когда я на него смотрел он поддерживал куда меньше плюшек и там были проблемы с документацией.

    По поводу того, что почитать — www.ejabberd.im/ www.igniterealtime.org/projects/openfire/ www.tigase.org/
    Там есть достаточно подробная документация, мэйл листы и исходники, последнее пожалуй самое полезное)

    А вообще не очень понятно зачем вам серверная часть, если вы пишете клиентскую.
    Ответ написан
    3 комментария
  • Сайт будет в дауне пару дней - что показывать поисковикам?

    gigigi
    @gigigi
    503 Service Unavailable (Сервис недоступен).
    Сервер временно не имеет возможности обрабатывать запросы по техническим причинам (обслуживание, перегрузка и прочее). В поле Retry-After заголовка сервер может указать время, через которое клиенту рекомендуется повторить запрос.

    Это касательно заголовков, а страницу можно показать каку-то свою, где пользователям будет сказано когда сайт станет снова доступен.
    Ответ написан
    1 комментарий
  • Требуется совет начинающему разработчику

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

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

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

    Так же будет полезно изучение теории. Паттерны, методики и основы надо знать — очень работе помогает.
    Ответ написан
    Комментировать
  • Почему хабр отказался от %username%.habrahabr.ru

    @lesha_penguin
    Все равно никто ничего не скажет. Поэтому мои предположения:

    1) Снижение нагрузки на DNS.
    за: на каждое обращение к профилю юзера выполняется лишний ресолвинг. вносит задержки. лишняя нагрузка на сеть.
    против: новость «как DNS лег под хабрэффектом» хорошо опубликовать первого апреля.

    2) >9000 виртуальных хостов сильно огорчили сервер.
    за: очень возможно, особенно если они были «брутально» прописаны в конфиге апача.
    против: сильно сомневаюсь что оно так. Сотни-то хостинговых кампаний предлагают услуги виртуального хостинга, когда и поболее доменов висит на одном сервере, и чем хабр отличается? Да и высоконагруженные проекты с кучей поддоменов: тоже есть хорошие примеры, ЖеЖешечка например, так же, работает себе, и ничего!

    3) Виртуальные поддомены вначале планировались для чего-то еще, типа возможности для хабраюзеров создать свой мини-сайт на хабре. Но потом решили так не делать. А сейчас просто «выпилили нахрен столетний рудимент» во время очередной итерации рефакторинга.
    за: иногда код следует перебирать и архитектурно. куча заведомо мертвого кода в проекте — путь в никуда, как жизнь в городе-призраке!
    против: только зачем? если рудимент не мешает, то святой принцип: работает-не трогай!

    4) Поддомены *.habrahabr.ru хотят дать компаниям под корпоративные блоги (посолидней как-то ведь), а юзеров просто передвинут /users/username/.
    за: очень даже возможно. Маркетингово совершенно нелогично когда «компания» имеет какую-то «домашнюю страничку» /companies/thecompany/ а «юзер» получает целый «домен».
    против: а компаниям на это пофиг, у каждой из них есть свой корпоративный сайт.

    5) Поддомены *.habrahabr.ru хотят отдать под тематические блоги. Каждая тематика-свой поддомен.
    за: да, вообще-то логично! более логичнее, чем для юзеров!
    против: а смысл?

    6) Распределение нагрузки за счет наращивания количества обслуживающих серверов.
    за: если определенные юзерские данные были связаны с определенными серверами, то логично.
    против: все равно непонятно, если запрос проходит через rewrite то пофиг что домен что кусок пути.

    7) Юзеры стали злоупотреблять пиаристыми поддоменами username.habrahabr.ru.
    за: а что, *.habrahabr.ru — возможно попробовать как инструмент для раскрутки.
    против: «малокалиберно» слишком. тянет на материал для новости на первое апреля.

    8) Выкатывание какой-то принципиально новой фишки, где поддомен будет только мешать.
    за: неизвестно что это за фишка, может поддомены и сильно будет мешать!
    против: а неизвестно что это за фишка, может поддомены и не будут мешать;)

    9) Хабр собирается выкатить пачкой сразу кучу хабра-сервисов. Логичное предположение, если ХабраСторадж — только начало, а завта планируется уже ХабраБлекджек.
    за: habrastorage.habrahabr.ru для Хабрастораджа более правильно, чем постоянный риск «фишинг-батхертов» вида ha6past0rage.ru. Да и проще с одной кукой авторизации в одном домене.
    против: ну, а если какой-то проект предусматирвает «столь тесную интеграцию с хабром», то почему бы не habrahabr.ru/projectname/?
    Ответ написан
    Комментировать
  • Почему хабр отказался от %username%.habrahabr.ru

    @NiGP Автор вопроса
    Ответ может быть полезен разработчикам, почему же отказались от виртуальных поддоменов. Нагрузка или просто решение что-то изменить.
    Ответ написан
    Комментировать
  • Почему хабр отказался от %username%.habrahabr.ru

    taliban
    @taliban
    php программист
    support@habrahabr.ru — пишите, спрашивайте, получайте ответы.
    Ответ написан
    4 комментария
  • Почему хабр отказался от %username%.habrahabr.ru

    @JoeyHere
    Только благодаря вопросу заметил изменения.
    И правда, интересно.
    Ответ написан
    Комментировать
  • HTML + CSS framework

    alexbaum
    @alexbaum
    JS-разработчик, наставник.
    framebox.org

    почитать + ссылочки на инструменты thegrids.ru/
    Ответ написан
    Комментировать
  • JQuery parents().get(2) против parent().parent().parent()?

    Smileek
    @Smileek
    Спасибо, веселенькая задачка получилась.:)
    Тестим вот на этом:
    <div id="i1"><div id="i2"><div id="i3"><div id="i4"></div></div></div></div>
    <div id="info"></div>

    Вот так:
    var x, dt, dt2;
    var iter = 100000;
    dt = new Date();
    for (var i = 0; i < iter; i++)
    {
        x = $("#i4").parent().parent();
    }
    dt2 = new Date();
    $("#info").text(dt2 - dt);
    				
    dt = new Date();
    for (var i = 0; i < iter; i++)
    {
        x = $("#i4").parents().get(2);
    }
    dt2 = new Date();
    $("#info").text($("#info").text() + ":" + (dt2 - dt));
    

    На заданном примере выигрывает parents().get(2). 3398:2910
    Далее делаем 12 вложенных элементов и прогоняем пример из комментария — пять parent()-ов против parents().get(5): с огромным перевесом выигрывает get(5) — 5374:3954.
    А вот get(3) проигрывает parent().parent().parent() — 3406:3880.

    Получается, что выбрать все 12 элементов и в них найти третий, дольше, чем три раза прыгнуть вверх по дереву.

    Наконец, вернемся к первому варианту с четырьмя элементами, и попробуем воспользоваться полученным родителем.
    var x, dt, dt2;
    var iter = 10000; /* <-- В 10 раз уменьшим, а то зависнем */
    dt = new Date();
    for (var i = 0; i < iter; i++)
    {
       $("#i4").text($("#i4").parent().parent().attr("id")); /* <-- Запишем id родителя в текст потомка */
    }
    dt2 = new Date();
    $("#info").text(dt2 - dt);
    				
    dt = new Date();
    for (var i = 0; i < iter; i++)
    {
       $("#i4").text($("#i4").parents().get(2).attr("id"));  /* <-- Попробуем сделать то же самое */
    }
    dt2 = new Date();
    $("#info").text($("#info").text() + " " + (dt2 - dt));
    

    И вот тут нас ждет сюрприз: $("#i4").parents().get(2).attr is not a function
    arr.get(i), по сути, то же, что и arr[i], то есть мы получим просто Object.
    Для того, чтобы воспользоваться jQuery-функциями, придется обернуть его в денежный знак:
    $("#i4").text( $( $("#i4").parents().get(2) ).attr(«id»));
    От этого мы и потеряем в производительности: 2665:2973.

    Мораль:
    1) Всегда найдутся варианты использования, которые лучше для одного варианта и хуже для другого.
    2) Эффект от производительности или ее потери будет только на больших числах — в самом первом примере мы выиграли 0,4 секунды за 100000 (!) итераций.
    3) Поэтому поступайте, как велит эстет внутри Вас: мне, скорее всего, в реальном примере было бы удобнее получить jQuery-объект и дважды воспользоваться parent()-ом. С другой стороны, восемь раз я бы писать parent() не стал: религия не позволяет.
    Ответ написан
    2 комментария
  • Интересный взгляд на покупку Моторолы?

    DevMan
    @DevMan
    Если не из серии
    — Сергей, вы просили купить моторолу, мы купили.
    — Какую модель?
    — Модель?!
    то пишите.
    Ответ написан
    Комментировать