Как стать "Rock Star" программистом

Вот несколько советов:

  • Найдите хорошего руководителя который будет критиковать ваш код, пусть он научит вас решать проблемы на собственном примере. Вы поймете что выросли, когда сможете оспорить его мнение правильными аргументами.
  • Всегда увеличивайте сложность и масштабы проблем которые пытаетесь решать. Запомните что у большинства людей нет 20-летнего опыта, у них есть один год опыта повторяющийся 20 раз. Не становитесь таким.
  • Заботьтесь о таких вещах как документация, имена методов и функций, покрывайте код тестами. Ваш код должен выглядеть профессионально и доступно, ведь с ним будут работать и другие люди.
  • Изучайте все доступные библиотеки и модули, даже если они не требуются сейчас, вы все равно должны знать об их существование. Если вам приходится работать с незнакомыми компонентами — старайтесь полностью разобраться с их назначением.
  • Если вы что-то не понимаете, то это должно стать стимулом пойти и разобраться в этом. Всегда погружайтесь глубоко.
  • Используйте лучшую IDE для вашего языка, максимально изучите ее и выучите все хоткеи. Хорошая IDE очень сильно ускорит вас.
  • Когда вы сталкиваетесь с новой проблемой, например вы никогда не работали с SOAP/XML, прежде чем начинать программировать почитайте что пишут в интернете на эту тему. Это поможет вам понять как другие люди решают задачи и с какими проблемами сталкиваются.
  • Семь раз отмерь, один раз отрежь.
  • Не забывайте что вы делаете продукт которым будут пользоваться другие. Постоянно общайтесь с заказчиками, следите за их ожиданиями, убеждайтесь что они знают чем вы занимаетесь и вы понимаете чего они хотят.

Это вольный перевод этой заметки, просто захотелось оставить тут.


работа, разработка      

Про отображение ошибок

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

http://site.ru/wow/it/is/error/page/

Ну реально полный кретинизм.

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

Прям вот ваще. Если у вас так - то я вас ненавижу.


разработка      

Самое простое ускорение сайта

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

Что я предлагаю ?

Давайте засунем главную страницу сайта, в memcache, и настроим nginx что бы он отдавал ее прямо из memcache не обращаясь к интерпретаторам. Будем класть раз в минуту сроком жизни на 60 секунд. Стоит понимать, что данный способ нужно дорабатывать, если у вас на страницах используется динамичные данные, то есть данный способ актуален только для "гостей" сайта, благо nginx умеет работать и cookie.

Пример настройки nginx'a

location / {

    default_type    text/html;

    if ( $request_uri = '/')
    {
        set $memcached_key "index_page";
        memcached_pass 127.0.0.1:11211;

        error_page 404 503 = @fallback;
    }

    error_page 404 = @fallback;
}

Пример cron скрипта, который можно повесить на выполнение.

error_reporting(E_ALL);
ini_set('display_errors', 1);

if( class_exists('Memcache', FALSE))
{
    $mem = new Memcache;

    $mem->connect('localhost', 11211);

    $html = file_get_contents('http://blog.rpsl.info/?asd');

    if(!empty( $html ) )
    {
        //$mem->delete('index_page', 0);
        $mem->set('index_page', $html, 0, 60 );

        //echo $html;
    }
}
else
{
    echo 'no memcache';
}

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

Идею я донес, дальше сами справитесь.


memcache, nginx, web, разработка      

Dive into Python :)

Шесть месяцев назад я нашёл в Интернете книжку "Dive into Python". Странная книжка, толстая, да ещё на не русском языке. Усердно прочитал её, методично и вдумываясь, но таки ничего и не понял. Но что–то не отпускало меня — я пошёл на python.org и стал изучать стандартную библиотеку, старательно, скрупулезно, от корки до корки. Гугля примеры кода, я наткнулся на пост в блоге одного гуру, где было написано про PEP8. То, что рассказывал этот умудрённый опытом кодер, настолько впечатлило меня, что я словно в припадке безумия бросился зубрить эту конвенцию по написанию питоньего кода. У меня тряслись руки, по телу прокатывали волны возбуждения, я, можно сказать, бился в экстазе всё это время — и теперь могу процитировать наизусть любой пункт, даже если меня разбудить посреди глубокой ночи.

Новые знания окрыляли меня, я бросился писать (что бы вы подумали?) очередную имиджборду. Я не писал раньше имиджборд, эта была моей первой. По пути пришлось освоить азы вёрстки на html и css, но там всё оказалось совсем не сложно.

Я плавно двигался вперёд, наращивая функционал. И знаете что? Я упёрся в недостаток производительности. Ну, так мне показалось. Я делал замеры, устранял места с тяжёлым кодом. Тысячи раз запускал ab, но так и не сумел перейти порог в 300 запросов в секунду. Я как–то ожидал большего и был немного разочарован.

Гугл, снова гугл. Десятки статей и тем на форуме… Довольно быстро я заметил, что люди часто пишут про какие–то "асинхронные веб–сервера". Часто встречались названия Tornado и Gevent. Я прочитал про них подробнее — и был просто ошеломлён. Как мне это раньше не приходило в голову?! Это же, это просто гениально, чёрт меня побери!

Исходники в ведро, всё переписать! Меня переполняло новое знание, поток мыслей ровно ложился в строчки кода. Я просто не мог остановиться. Чашка кофе… Ещё чашка… Мой небольшой кусочек софта приобретал кристальную чистоту, я смертельно устал, но продолжал в умилении полировать его зудящими руками, нанося последние штрихи.

Пять тысяч. Я получил производительность в пять тысяч запросов в секунду. В ту ночь я так и не смог заснуть.

Увлекательнейший мир хай–лоада открылся передо мной. Позже я изучил ещё много классных вещей типа сверх-быстрых асинхронных key–value–хранилищ, или, например, такого необычного подхода к обработке данных, как map–reduce.

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

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

А ещё, я никогда не забуду тот момент, когда на одной из конференций я впервые в жизни поймал на себе завистливый взгляд. Это был взгляд какого–то сливающегося с толпой неудачника, взгляд преисполненный ненависти, презрения и желчного вожделения, направленного на мой Олимп. Наверное, он всю свою никчёмную жизнь писал на каком–нибудь си–шарпе или там на джаве, проводя долгие дни в одиночестве. И теперь начинал подсознательно догадываться, что долгие годы безуспешно пытался построить замок из навоза.


python, работа, разработка      

Как разрабатывают ПО для шатлов

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

В то время, когда 120-ти тонный шаттл стоит, окруженный почти 4-мя миллионами фунтов ракетного топлива, источая ядовитые пары, с явным желанием бросить вызов земной гравитации; его бортовые компьютеры получают команду. Четыре идентичных компьютера, работающие под управлением идентичного ПО, собирают информацию из тысяч датчиков, принимая сотни миллисекундных решений, утверждая каждое решение, сверяясь друг с другом 250 раз в секунду. Пятый компьютер, с другим ПО, готов взять управление на себя в случае сбоя остальных четырех.

В момент времени -6.6 секунды, если давления, насосы и температуры в норме, компьютеры дают приказ зажечь главные двигатели шаттла – каждый из трех двигателей вспыхивает ровно через 160 миллисекунд, тонны сверхохлажденного жидкого топлива попадают в камеры сгорания, корабль дрожит на своей пусковой площадке, удерживаемый на земле только креплениями. Когда главные двигатели достигают силы тяги в миллион фунтов, их выхлопы превращаются в голубые бриллианты пламени.

Тогда и только тогда, в момент времени -0 секунд, если компьютеры убедились, что двигатели работают правильно, они дают приказ поджечь массивные ракетные ускорители. Менее чем за секунду, они развивают силу тяги в 6.6 миллионов фунтов. И именно в этот момент, компьютер отдает приказ взрывчатым креплениям взорваться, и корабль весом 4.5 миллионов фунтов величественно поднимается над стартовой площадкой.

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

Читать далее

работа, разработка      

Разработка под Joomla

joomla.png

Хочешь испытать чувства сходные с разработкой под Joomla ?
Да
Брось говно на вентилятор.


CMS, joomla, php, разработка