• Микроволновка в офис?

    Smileek
    @Smileek
    Были те же самые аргументы за и против: в конечном итоге микроволновка стоит в кабинете, и никто не умер от запахов еды. Хотя вот прямо сейчас невкусно пахнет тушеной капустой. На производительность не влияет, вспышек гнева в коллективе нет. Правда, это наверно зависит от коллектива.

    Однако если есть возможность оборудовать отдельную комнату — обязательно ей воспользуйтесь. В прежнем офисе так было — гораздо лучше. Пошел, поел, отвлекся от монитора, подумал о вечном. И вкусно, и полезно.
    Ответ написан
    2 комментария
  • Действительно ли важны чистые ссылки?

    Smileek
    @Smileek
    Влияют, потому что это еще один способ для поисковика понять, что страница соответствует поисковому запросу.
    Он будет смотреть на заголовки, на мета-теги, еще много на что и на текст УРЛа в том числе. И если страница совпала по заголовку — это одно совпадение, если по заголовку и УРЛу — это уже два.
    Ответ написан
    1 комментарий
  • Доступ к архиву новостей какого-либо информационного агентства за пару прошлых лет?

    Smileek
    @Smileek
    Думаю, должен помочь веб-архив.
    Берете сайт интересующего информационного агентства и смотрите древнюю копию. Например, если брать reuters.ru (первое, что пришло в голову), есть копии аж с 97-го года.
    Ответ написан
    1 комментарий
  • Сделать свою клавиатуру?

    Smileek
    @Smileek
    Могу посоветовать на тот случай, если не хватит денег и/или не получится договориться с китайскими производителями: есть интересный проект http://www.quirky.com/

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

    Если наберется достаточное количество желающих оформить предзаказ, товар запускается в производство.
    После чего Вы просто получаете долю от продаж. 30% от прямых продаж на сайте и 10% от косвенных продаж через магазины достаются всем, кто был задействован в проекте. Из них автору идеи достается примерно треть. При массовом производстве может оказаться неплохой цифрой, я думаю.
    Ответ написан
    2 комментария
  • 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 комментария
  • Варианты реализации прочитанные/новые комментарии?

    Smileek
    @Smileek
    Куки — неправильный вариант. Если пользователь зашел с другого места, у него будут все сообщения непрочитанными, поэтому надо привязывать прочтение к юзеру, а не к компьютеру.

    Таблица в БД user_id, topic_id, timestamp и ее обновление при заходе в тему. Первые два поля — составной ключ, или добавляете id записи — по вкусу.
    Ответ написан
    1 комментарий
  • Nhibernate, Paging, Count(*), OrderBy и производительность?

    Smileek
    @Smileek
    Постраничный вывод:
    return Session.CreateCriteria<T>()
    .AddOrder(Order.Asc("Id"))
    .SetFirstResult((pageNumber - 1) * pageSize)
    .SetMaxResults(pageSize)
    .List();
    


    Count:
    return (int) session.CreateCriteria<T>()
    .SetProjection(Projections.Count("Id")); // Любое поле
    .UniqueResult();
    


    Более эстетичный вариант с NHibernate 3.0
    Paging:
    return Session.QueryOver<T>()
    .OrderBy(x => x.Id).Asc
    .Take(pageSize)
    .Skip((pageNumber - 1) * pageSize)
    .List();
    


    Count:
    return Session.QueryOver<T>().RowCount();
    
    Ответ написан
    Комментировать
  • Как сделать скриншот с помощью JavaScript / Flash / ActiveX / etc?

    Smileek
    @Smileek
    Если Flash также устраивает, наверно надо копать в эту сторону.
    Вот тут и вот тут решаются задачи по меньшей мере похожие на вашу.

    А вот здесь предлагают решения и на JS, и на ActiveX.
    В частности, речь идет о библиотеке html2canvas. Однако насколько я понял из описания, она делает скриншот на основе кода страницы, т.е. эдакий браузер, который выводит не на экран, а прямо в файл-картинку.
    Могу ошибаться, но мне кажется, что видео такая штука не захватит.

    То есть я бы подтолкнул ваши мысли в направлении ActionScript 3, благо Flash вы итак используете на сайте.
    Ответ написан
    2 комментария
  • Западные хабрапроекты

    Smileek
    @Smileek
    Слэшдот сразу в голову пришел.
    Правда там нет больших статей — новостной формат.
    Но тоже тусовка гиков, холивары в комментах, и, кстати, slashdot-effect — прообраз хабраэффекта.
    Ответ написан
    3 комментария
  • Редактор, способный работать по ftp через proxy?

    Smileek
    @Smileek
    Могу посоветовать хорошую и бесплатную штуку PSPad Editor.

    Сразу оговорюсь, что подобным функционалом пользоваться не приходилось, но по меньшей мере в окне настроек FTP-соединений есть галочка «использовать прокси-сервер». Так что если у Вас действительно проблема соединения только в этом, думаю, должно помочь.
    Ответ написан
  • Сайт выбора фильмов?

    Smileek
    @Smileek
    Мы обратились в передачу «жди меня» и нашли ваш сайт.

    Google: лучшие комедии "Как приручить дракона" "Выход через сувенирную лавку" inurl:baza
    Ответ написан
    2 комментария
  • В каком городе России открывать офис разработки? Где наиболее сильные не слишком дорогие разработчики?

    Smileek
    @Smileek
    Поделюсь тем, что услышал на вот этом докладе.

    Первое: средняя московская зарплата разработчиков — порядка 120 т.р., питерских — 80-90, в регионах не более сорока. Аренда, естественно, тоже существенно меньше в регионах.

    Насколько помню, рассматривались как города в принципе пригодные для поиска программистов только Москва, Питер, Екатеринбург и, по-моему, Нижний. Из зала прозвучало обиженное «Почему Новосиб обделили?», и докладчица тут же исправилась, сказав, что да — еще Новосиб.
    Согласно их исследованиям в других городах средний уровень существенно ниже.

    Это что касается материалов доклада.

    От себя добавлю, что не знаю, как уровень, а вот количество программистов у нас (в Пензе, например) очень маленькое — все ищут, очень мало кто находит.
    То есть проблема в регионе будет скорее в выборе, особенно если Вы хотите собрать команду опытных программистов, а не студентов с перспективой.
    Ответ написан
    8 комментариев
  • Как определить, сколько времени будет выполняться запрос к БД?

    Smileek
    @Smileek
    declare @startTime datetime;
    set @startTime = getutcdate();
    -- Ваши запросы.
    select datediff(ms, @startTime, getutcdate()); --ответ в миллисекундах
    


    Или проблема в чем-то другом? Запросы еще не написаны?
    Ответ написан
  • Красивая вёрстка <figure>

    Smileek
    @Smileek
    figure {width:1%; display:table}

    И ведь решается на чистом CSS! :)
    jsfiddle.net/XML6b/
    Ответ написан
    5 комментариев
  • Какую систему налогообложения выбрать для веб-студии?

    Smileek
    @Smileek
    Как правило, студии оформляются на упрощенку (УСН) по схеме доходы.

    Оплачивается 6% с суммы прибыли. Доходы минус расходы будут нерентабельными, потому что расходов, которые можно впихнуть в отчетность, у студии мало. НДС не платится.

    Единственный нюанс: если Вы не хотите платить налоги по полной программе (34%), все сотрудники регистрируются как ИП, и Вы заключаете с ними договора на оказание услуг. Это выгодно и не надо платить зарплату в конвертах.

    Могу подсказать сервис, который позволит вести бухгалтерию онлайн, заодно там и консультации можете получить по всем вопросам.
    Ответ написан
    7 комментариев
  • Сколько нужно кармы, чтобы голосовать за комментарии?

    Smileek
    @Smileek
    Ссылочка
    Правда, не совсем коррелирует с голосованием при карме == 1.
    Видимо, надо ориентироваться на информацию в левом верхнем углу — там написано, сколько осталось голосов. Информация основывается на активности за последние сутки.
    Ответ написан
    Комментировать
  • Как запретить автообновление конкретного плагина Firefox?

    Smileek
    @Smileek
    Нужно проделать следующее:
    — Набрать в адресной строке about:config
    — Правый клик -> Создать -> Логическое (New -> Boolean)
    — Присвоить новой переменной имя: extensions.{GUID}.update.enabled
    — И значение: false

    Осталось выяснить откуда взять GUID.
    Ленивый вариант: Extension Manager Extended, показывает GUID в свойствах плагина.
    Ручной вариант: в config'е задать фильтр «extensions.{» и обнаружить плагин по описанию.

    Источник

    З.Ы. А можно поинтересоваться, почему такая аллергия на обновления? Шустрее ведь работают следующие версии.
    Ответ написан
    5 комментариев