• Ваше мнение - Кто имеет право праздновать день программиста?

    Nickel3000
    @Nickel3000
    А вам жалко что ли? Пусть кто хочет — тот и празднует, хоть День космонавтики, хоть День программиста.
    Ответ написан
    3 комментария
  • Динамические структуры. Обязательна ли процедура dispose()?

    foxmuldercp
    @foxmuldercp
    Системный администратор, программист, фотограф
    GC точно встроен в C#, и судя по всему в остальные .Net языки, хотя я точно не уверен
    Я считаю это хорошим тоном, даже если это в ЯП не используется, возможно за этим также следит ОС, я не профессионал, поэтому точно сказать не могу. Когда на C# я писал пакетную ресайзилку изображений, после того, как в процедуру ResizeImage (стыренную откудато из сети) в конце после формирования преобразованного image, я воткнул Image.Dispose(), отжирание памяти сократилось на 100-200 метров.
    Ответ написан
    2 комментария
  • Какой лучший учебник по линейной алгебре

    Roler
    @Roler
    Беклемишев Д.В. Курс аналитической геометрии и линейной алгебры.

    Неплохо, говорят)
    Ответ написан
    1 комментарий
  • О стиле программирования: Переносить ли скобку?

    cypok
    @cypok
    Нету «правильного» варианта, есть принятый в рамках данной группы разработчиков.
    Ответ написан
    3 комментария
  • Как получить одинаковый хэш двух схожих строк?

    el_gato
    @el_gato
    Не получится, слишком много неопределенностей, особенно без сравнения строк, для примера
    Васюковая -> Масюковая -> Масюковае -> Масюковое -> Масуковое -> Мосуковое -> Мозуковое -> Мозуговое -> Мозугавое -> Мозугадое
    Каждое слово схоже с следующим, и следовательно должено иметь одинаковый хэш, но разница между первым и последним уже огромная.
    Ответ написан
    Комментировать
  • Кто хочет написать скрипт для сбора статистики с первого Хабракампа?

    sledopit
    @sledopit
    Дешево Быстро и сердито:

     $ ./parse.sh http://habrahabr.ru/post/148795/ | column -t
    Now_is:                Wed_Aug_1_00:28:55_MSK_2012
    The_url_is:            http://habrahabr.ru/post/148795/
    Max_"+"_is:            13                                RxB
    Max_"-"_is:            30                                Gangsta
    Total_comments:        721
    Top_commentor_is:      49                                opium
    Total_questions:       342
    Total_links:           57
    Most_popular_site_is:  4                                 http://twower.livejournal.com
    Total_commentators:    189
    Total_"+":             495
    Total_"-":             101
    Total_Sign:            394


    Собственно сам код:
    #!/bin/sh
    v_temp=`mktemp`
    echo -n "Now_is: "
            date | sed 's/\s\+/_/g'
    echo "The_url_is: $1"
    wget -q --referer="http://www.google.com" --user-agent="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6" -O $v_temp "$1"
    sed -i '/comments_list/,/for_users_only_msg/!d' $v_temp
    echo -n 'Max_"+"_is: '
            sed -n "/class=\"\(score\|username\)\"/p" $v_temp | sed 'N;s/<[^>]*>//g;s/\n//;s/^\s\++//;/^\s\+–/d' | sort -n | tail -1
    echo -n 'Max_"-"_is: '
            sed -n "/class=\"\(score\|username\)\"/p" $v_temp | sed 'N;s/<[^>]*>//g;s/\n//;s/^\s\+–//;/^\s\++/d' | sort -n | tail -1
    echo -n 'Total_comments: '
            sed -n '/class="score"/p' $v_temp | wc -l
    echo -n 'Top_commentor_is: '
            grep username $v_temp | sort | uniq -c | sort -n | tail -1 | sed 's/<[^>]*>//g;'
    echo -n 'Total_questions: '
            sed -n 's)<[^>]*>))g;/\?/p' $v_temp | wc -l
    echo -n 'Total_links: '
            sed -n '/message html_format/,/^\s\+<\/div>/{s><a href>\n&>;/a href/p}' $v_temp | grep "a href" | wc -l
    echo -n 'Most_popular_site_is: '
        sed -n '/message html_format/,/^\s\+<\/div>/{s><a href>\n&>;/a href/p}' mktemp | egrep -o 'https?://[^/"]*' | sort | uniq -c | sort -n | grep -v habr | tail -1
    echo -n 'Total_commentators: '
            sed -n '/class="username"/p' $v_temp | sort -u | wc -l
    echo -n 'Total_"+": '
            sed -n '/class="score"/{s/.*uarr;\([0-9]\+\).*/\1/;p}' $v_temp | awk '{sum+=$1}END{print sum}'
    echo -n 'Total_"-": '
            sed -n '/class="score"/{s/.*darr;\([0-9]\+\).*/\1/;p}' $v_temp | awk '{sum+=$1}END{print sum}'
    echo -n 'Total_Sign: '
            sed -n '/class="score"/{s/.*uarr;\([0-9]\+\).*darr;\([0-9]\+\)/\1 \2/;p}' $v_temp | awk '{plus+=$1;minus+=$2}END{print plus-minus}'
    rm $v_temp

    Можно применять не только к вышеназванному топику. (:
    Ответ написан
    3 комментария
  • Как Вы оцениваете качество своего продукта?

    Wott
    @Wott
    RC — это когда фичи для релиза уже все есть, а тестирование еще не закончено
    Бета — это когда базовый функционал протестирован, но второстепенные фичи еще не готовы или не зафискированы.

    А отдавать на бетатестирование надо как можно раньше, потому что фидбэк от пользователей — неоценимая штука.
    Ответ написан
    Комментировать
  • Как Вы оцениваете качество своего продукта?

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

    Если у нас уже бета версия, то беру друга уже понимающего в данной технологии. И повторяю тоже самое, только здесь либо бета, либо RC.
    Ответ написан
    Комментировать
  • Почему ссылки на ответы в Q&A разного цвета?

    nazarpc
    @nazarpc
    Open Source enthusiast
    Белый — это когда найден желаемый ответ и помечен, как решение
    Ответ написан
    1 комментарий
  • Как "упаковать" статический сайт и standalone-браузер в один .exe?

    @gaussgs
    Можно сделать примитивное приложение на Qt, там есть встроенный WebKit, который позволяет достаточно просто переопределять источники ресурсов. Такой подход обломает большинство неспециалистов.
    О добавлении новых протоколов в QtWebKit можно прочитать здесь: doc.qt.nokia.com/qq/32/qq32-webkit-protocols.html
    Далее, делаем zip-архив с содержимым, ставим на него пароль и заталкиваем его в ресурсы. Когда браузер идёт по специальному адресу — ищем ресурс в архиве.
    Достоинства: кроссплатформенный софт, обламываются стандартные декомпиляторы
    Недостатки: ощутимый размер приложения, не уверен насчёт статической сборки вебкита
    Ответ написан
    3 комментария
  • Определение нарушения уровня абстракции?

    forketyfork
    @forketyfork
    Если говорить о нарушении уровня абстракции в методе, то оно, как правило, заключается в том, что метод выполняет несколько действий, которые относятся к разным уровням абстракции.
    Скажем, если в одном и том же сервисном методе присутствует как бизнес-логика, так и обращения к базе данных или файловой системе, не абстрагированные, например, через DAO, то это — нарушение абстракции на уровне метода.

    Если говорить о нарушении уровня абстракции в отношении класса, то оно обычно представлено тем, что разные методы класса относятся к разным уровням абстракции.
    Например, если одни методы DAO в качестве параметров получают доменные объекты, а другие — значения полей для прямой вставки в таблицу, то это — нарушение абстракции на уровне класса.
    Ответ написан
  • Как стать профессиональным веб-разработчиком за 7 лет?

    EugeneOZ
    @EugeneOZ
    Фигню вам тут советуют. Одной лишь работе на фрилансе вы мало чему научитесь. Скорее всего, наберётесь примеров говнокодинга в здачах «подправить скрипт» и подумаете, что так и нужно делать.
    Вы не самый молодой — я видел тут 14-летнего парня, который на C# пишет круче всех PHP- и Python-программистов, которых я видел. Просто есть огромная разница между enterprise и home-page проектами. Java и C# имеют в себе больше от enterprise-культуры.

    Самый лучший совет Вам сейчас: читайте книги. Как можно больше книг. Обязательно сочетайте с практикой. Но не на фрилансе, а «свои велосипеды», чтобы была возможность пробовать применять знания из книг. Пока Вас кормят родители — это самое лучшая возможность начинать свои проекты. Возможно, Вы сейчас мало придаёте этому значения, но это так.

    Изучайте существующие фреймворки.
    Книги и работа с фреймворками (в том числе фреймворками для unit-тестирования) дадут Вам огромнейшее количество знаний, Вы сможете сэкономить многие многие годы, которые другие программисты тратят, чтобы постигнуть всё своим путём.
    Читайте Макконнелла «Совершенный код», Роберта Мартина — «Чистый код», Э. Хант, Д. Томас — «Программист прагматик».
    Изучайте Qt, Symfony, Visual Studio. Никогда не думайте, что Вы остановитесь на одном языке — нужно изучать несколько языков, чтобы видеть несколько способов решения проблем.

    Выбирая профессию программиста, знайте, что Вы будете учиться ВСЕГДА, а не следующие 7 лет. Новые технологии появляются каждый год, индустрия очень молодая и активная — каждый год Вы будете изучать и пробовать новое. Это университет без даты окончания :)
    Ответ написан
    6 комментариев
  • Как замерить производительность кода прямо в коде?

    LightSUN
    @LightSUN
    Похоже вот это подойдёт:

    [DllImport("kernel32.dll")]
    [return: MarshalAs(UnmanagedType.Bool)]
    static extern bool QueryProcessCycleTime(IntPtr ProcessHandle, out ulong CycleTime);
    Ответ написан
    1 комментарий
  • Так все же, куда пойти работать?

    @Alexxander
    Теперь снимаю квартиру с девушкой.

    Сколько стоят нынче в Питере квартиры «с девушками»? ;)
    Ответ написан
    2 комментария
  • Сайт, способный выдержать высокую нагрузку (?)

    @mithraen
    Все зависит от постановки задачи. Если вам нужно для бизнеса, то возьмите wordpress, в интернете масса советов по его ускорению и доточке. Прямо вот завтра у вас тысячи хитов в секунду не будет, а к тому времени, когда будет, вы доточите его до устраивающей вас производительности.

    Если же just for fun, вам хочется сделать очень быстрый движок, и именно это является основной целью — только тогда есть смысл браться и писать его.

    1. Используйте аналог SSI от nginx для сборки страницы из нескольких кусков. Это позволит сэкономить на записи (большая часть контента будет статична, и часто обновляться будут в основном навигационные элементы).

    2. С раздачей статики великолепно справляется nginx, и упираться он будет исключительно в ширину канала и скорость дисковой подсистемы.

    3. Следовательно, чтобы исключить влияние дисковой подсистемы — используйте сервер с SSD (они уже доступны), также часть, или даже весь контент можно дублировать в tmpfs.

    4. Часто изменяемые данные (например список новых материалов на форуме, и т.д.) есть смысл держать в memcached. Благо nginx умеет раздавать прямо из memcached.

    5. Выбор языка для разработки тут не существенен, на самом деле. А задача объемная. При этом раз вы завязываетесь на nginx со специфическими настройками — все равно «обычный хостинг» уже не подходит. А следовательно вы можете выбирать любой язык разработки, исходя из того на чем такое решение писать будет лучше. Ограничиваться PHP не обязательно.

    6. Для подобных проектов главное — быстро выкатить концепт. После осознания результатов вы все равно будете вынуждены переписать 90% кода. Так что если вы знаете PHP — пишите на нем. Совмещать изучение совершенно нового языка, с продумыванием необычной архитектуры нового сервиса — тяжкая задача.
    Ответ написан
    Комментировать
  • Вы заменили рабочую тетрадь на планшет? Если да\нет, то почему?

    sdevalex
    @sdevalex
    Я тетрадь использую только для расчетов, схем и набросков… бумага выступает в роли краткосрочно памяти, по ней поиск не нужен. Ни одна программа не может соревноваться гибкостью в подобных задачах.

    Да и в тетради всегда можно в свободном месте что-то нарисовать =)
    Ответ написан
    6 комментариев
  • Сколько будет 0/0?

    SLY_G
    @SLY_G
    журналист, переводчик, программист, стартапщик
    Математически не определено.
    Дело в том, что x/x=1 так как x = x * 1
    Но поскольку <любое число> * 0 = 0, получается неопределённость.
    Ответ написан
    Комментировать
  • Имеет ли решение задача?

    @AndreyDaeron
    1. R = a1*|k-b1/a1| + a2*|k-b2/a2| + a3|k3-b3/a3| +… + an|k-bn/an| (если ai=0 — то за скобки не выносим и нам это пофиг.
    2. Очевидно, что такая функция кусочно-линейна относительна к на каждом из участков, к, для которых модули открываются с одинаковым знаком (предположим что а1/b1>b2/a2>...bn/an, если это не так — отсортируем что бы было так). Имеется ввиду что на участке [(ai/bi,(ai+1)/(bi+1)] функция будет линейна (!!! Это, в общем случае неверно для для (-inf,+inf).
    3. Поскольку она линейна, то её минимум будет достигнут в одной из точек ai/bi.
    4. ????? (перебираем все точки ai/bi)
    5. Profit

    И никакого бинарного поиска ))
    Ответ написан
    21 комментарий