Как стать автором
Обновить
-14
0

Пользователь

Отправить сообщение

10 тяжёлых истин о работе программиста, про которые никто не предупреждает

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров67K

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

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

Всё это приятные бонусы, но никто не говорит им, что на самом деле им придётся делать на этой работе.

Имея большой опыт работы в этой отрасли, я смог показать им, какова жестокая реальность. Я рассказал им о хорошем, но также поделился и неприятными истинами.

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

Читать далее
Всего голосов 185: ↑170 и ↓15+155
Комментарии417

Протоколы семейства TCP/IP. Теория и практика

Уровень сложностиСредний
Время на прочтение23 мин
Количество просмотров96K
image

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

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

В ходе работы над статьёй я написал небольшое приложение, которое послужит отправной точкой для понимания компьютерных сетей и семейства протоколов TCP/IP. С приложением можно экспериментировать, получая дополнительные знания.

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

В статье изложены наиболее важные с моей точки зрения понятия, которые должен знать любой программист, хоть как-то сталкивающийся с компьютерными сетями. Так что без теоретических сведений не обошлось.
Читать дальше →
Всего голосов 82: ↑82 и ↓0+82
Комментарии5

Антисобеседования

Время на прочтение11 мин
Количество просмотров142K
Я побывал на многих плохих собеседованиях, и в качестве кандидата и в качестве ведущего, и в качестве наблюдателя. В результате сформулировался крайне субъективный набор заметок о том, как стоит и как не стоит проводить собеседование разработчиков.


Собеседование — это экзамен


Ведущий — строгий учитель, а кандидат — студент. Классический сеттинг. Обычно проходит так. Спросили откуда ты, что ты, и потом пошло техническое собеседование.

Начинается с простых вопросов на раскачку, примерно таких:
Читать дальше →
Всего голосов 221: ↑206 и ↓15+191
Комментарии677

Как работает компьютер: глубокое погружение (на примере Linux)

Уровень сложностиСложный
Время на прочтение48 мин
Количество просмотров132K



Введение


Я делала много вещей с компьютерами, но в моих знаниях всегда был пробел: что конкретно происходит при запуске программы на компьютере? Я думала об этом пробеле — у меня было много низкоуровневых знаний, но не было цельной картины. Программы действительно выполняются прямо в центральном процессоре (central processing unit, CPU)? Я использовала системные вызовы (syscalls), но как они работают? Чем они являются на самом деле? Как несколько программ выполняются одновременно?


Наконец, я сломалась и начала это выяснять. Мне пришлось перелопатить тонны ресурсов разного качества и иногда противоречащих друг другу. Несколько недель исследований и почти 40 страниц заметок спустя я решила, что гораздо лучше понимаю, как работают компьютеры от запуска до выполнения программы. Я бы убила за статью, в которой объясняется все, что я узнала, поэтому я решила написать эту статью.


И, как говорится, ты по-настоящему знаешь что-то, только если можешь объяснить это другому.


Более удобный формат статьи.

Читать дальше →
Всего голосов 152: ↑152 и ↓0+152
Комментарии36

Полезен ли сегодня быстрый обратный квадратный корень из Quake III?

Время на прочтение23 мин
Количество просмотров71K

В 2005 году id Software опубликовала под лицензией GPL-2 исходный код своей игры 1999 года Quake III Arena. В файле code/game/q_math.c есть функция для вычисления обратного квадратного корня числа, которая на первый взгляд выглядит очень любопытным алгоритмом:

float Q_rsqrt( float number )
{
    long i;
    float x2, y;
    const float threehalfs = 1.5F;

    x2 = number * 0.5F;
    y  = number;
    i  = * ( long * ) &y;                       // зловещий хакинг чисел с плавающей запятой на уровне битов
    i  = 0x5f3759df - ( i >> 1 );               // какого чёрта?
    y  = * ( float * ) &i;
    y  = y * ( threehalfs - ( x2 * y * y ) );   // первая итерация
//  y  = y * ( threehalfs - ( x2 * y * y ) );   // вторая итерация, можно удалить

    return y;
}

Об этом алгоритме написано множество статей, и ему посвящена хорошая страница Википедии, где он назван fast inverse square root (быстрым обратным квадратным корнем). На самом деле, этот алгоритм упоминался на различных форумах ещё до публикации исходного кода Q3. Ryszard из Beyond3D провёл в 2004-2005 годах исследование и в конечном итоге выяснил, что первоначальным автором алгоритма был Грег Уолш из Ardent Computer, который создал его десятью годами ранее.
Читать дальше →
Всего голосов 196: ↑194 и ↓2+192
Комментарии52

«Почему я не могу нормально зарабатывать?» 5 особенностей мышления, которые мешают это делать

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров91K

Думаю, как и я, очень многие задавались вопросом: «Почему несмотря на хорошее образование, любознательность, способности и трудолюбие, они зарабатывают меньше, чем им хочется. Где баг, который мешает зарабатывать больше?»

Читать далее
Всего голосов 133: ↑113 и ↓20+93
Комментарии145

Прекращайте оправдываться

Время на прочтение5 мин
Количество просмотров105K

Привет, человек, %хабраюзер%, %юзернейм%, программист.

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

Разрешите объясниться.
Всего голосов 379: ↑324 и ↓55+269
Комментарии361

Как я нахожу парковочное место за 5 секунд

Время на прочтение5 мин
Количество просмотров112K

Большой размер придомовой парковки не гарантирует, что вы легко и быстро найдете парковочное место, а чаще даже наоборот, при заезде на парковку может начаться приступ депрессии от того, что объехал парковку, потратил время, но в итоге место не нашёл. Как можно добавить в жизни чуть-чуть больше определённости, я опишу ниже.

Читать далее
Всего голосов 273: ↑272 и ↓1+271
Комментарии339

Разработчик с мозгом груга

Время на прочтение14 мин
Количество просмотров85K

Введение


это сборник мыслей о разработке программ собранный разработчиком с мозгом груга

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

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

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

Ещё больше-больше ДУМАЮТ, что они разработчики с большим мозгом и им она тоже не понравится

(груг раньше думал груг с большим мозгом, но потом всё понял)

это ладно!

груг надеется, что тебе понравится читать и может ты научишься на много-много ошибка груг совершил за длинную жизнь программиста
Читать дальше →
Всего голосов 261: ↑235 и ↓26+209
Комментарии81

Как получить 5 Тб дисков нахаляву

Время на прочтение1 мин
Количество просмотров107K

Короткая заметка, написать которую меня натолкнуло появление этой статьи: "Неожиданная находка, которая освобождает 20 GB". Ха! Всего 20GB ? Есть универсальный способ освободить больше. На который я натолкнулся ~1,5 года назад.

Linux утилита mkfs.ext4 (ext2/ext3/ext4) имеет параметр -m, о котором мало кто знает. Я не знал. И никто из моих знакомых-линуксоидов не знал.

Этот параметр резервирует место, в процентах, доступное только суперпользователю. Чтобы, когда обычные юзеры выжрут весь диск, демоны продолжали оголтело писать свои логи, не падая. Значение по-умолчанию: 5. ПЯТЬ ПРОЦЕНТОВ! Что на диске в 10Тб даёт сумасшедшую цифру в 500 гигабайт. На логи, да! Наверное в начале-середине 90х такая процентовка имела смысл, но явно не сейчас. Особенно для дисков с данными, где никаких логов нет и не предвидится.

Мало того что производители дисков жонглируют гига- гиги- байтами, неизменно продавая обьём меньше интуитивно ожидаемого. Так ещё и "налог" сверху, в 5%, от утилиты форматирования!

Переформатировав свои 100тб дисков, я получил дополнительные 5Тб дискового пространства, просто так, на ровном месте.

Всем хороших выходных!

Читать далее
Всего голосов 143: ↑106 и ↓37+69
Комментарии243

Все самые крутые решения в моей жизни — импульсивные. Как я стал senior-разработчиком в 17 лет

Время на прочтение8 мин
Количество просмотров51K

Привет! Меня зовут Жан, мне 17 лет, я senior Java-разработчик в Beeline Казахстан и ученик 11 класса (из 12-ти) Назарбаев Интеллектуальной школы (НИШ) физико-математического направления в Алматы. 

Да, всё верно, я ещё учусь в школе.

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

Как школьник стал разработчиком
Всего голосов 98: ↑61 и ↓37+24
Комментарии208

Как отлаживать bash-script-ы по шагам или, возможно, самая короткая статья о программировании/отладке на Хабре

Время на прочтение1 мин
Количество просмотров41K

Мне всегда хотелось иметь возможность отлаживать bash-scripts так же, как и любой другой код, т.е. по шагам, и bash такую возможность предусмотрел, но о ней не все знают. Несмотря на довольно большой опыт использования Linux, я дошёл до неё только недавно.

Читать далее
Всего голосов 190: ↑189 и ↓1+188
Комментарии37

Как мы отказались от JPEG, JSON, TCP и ускорили ВКонтакте в два раза

Время на прочтение24 мин
Количество просмотров166K

На протяжении всей жизни мне приходится экономить вычислительные и сетевые ресурсы: сначала были компьютеры с 300 кГц (кило — не гига!) и 32 Кбайт RAM, интернет по dial-up. Потом я решал олимпиадные задачки. Теперь имею дело с терабайтами трафика и 50 млрд событий в сутки. И хотя современные телефоны в 1 000 раз мощнее любого оборудования двадцатилетней давности, я до сих пор оптимизирую. Думал даже, что это со мной что-то не так. Но потом понял, что все постоянно что-нибудь оптимизируют. 

Эта статья в меньшей степени о том, почему нужно бороться за производительность, и в большей о том, на что сейчас стоит заменить устаревший стек из JPEG, JSON, gzip и TCP — и как это сделать. 

Спойлер: у нас есть решение и мы его не только показываем — ссылки на open source в конце статьи.

Читать далее
Всего голосов 435: ↑423 и ↓12+411
Комментарии300

Преврати любимое дело в работу, и…

Время на прочтение4 мин
Количество просмотров21K

Вам нравится что-то делать. Вы увлечены этим делом. И вы подумываете превратить увлечение в профессию?

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

И как это прекрасно: зарабатывать себе на жизнь, занимаясь любимым делом! Рецепт долгой счастливой жизни: любить свою работу, увлечённо трудиться, воспринимать трудности как вызов, смотреть на мир горящими глазами.

И это работает! Правда, недолго...

И вот почему
Всего голосов 87: ↑81 и ↓6+75
Комментарии28

Как научиться чему угодно с помощью техники Фейнмана

Время на прочтение9 мин
Количество просмотров197K


Ричард Фейнман был физиком, удостоенным Нобелевской премии, который внёс значительный вклад в такие области, как квантовая механика и физика частиц. Он также стал пионером квантовых вычислений и ввел понятие нанотехнологии. Он был известным лектором, преподавал в Корнелльском университете и Калифорнийском технологическом институте.

Несмотря на все свои достижения, Фейнман считал себя «обычным человеком, который много учился». Он считал, что любой человек способен при достаточных усилиях изучить даже такие сложные предметы, как квантовая механика и электромагнитные поля.

Нет никаких чудо-людей. Просто случилось так, что они заинтересовались чем-то и выучили все про это. Ричард Фейнман

Ричарда Фейнмана Ричардом Фейнманом (по крайней мере, по мнению Ричарда Фейнмана) сделал не врождённый интеллект, а систематический способ, с помощью которого он выявлял то, чего не знал, а затем бросался постигать это.

На протяжении всей своей работы и жизни, Фейнман с элегантностью и простотой давал представление о своём процессе рассмотрения сложных концепций в мире физики и изложения знаний/идей. Многие из этих наблюдений о его процессе обучения были собраны в то, что мы сейчас называем «техникой Фейнмана».

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

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

В этой статье будет представлен обзор техники Фейнмана и того, как вы можете применять её для постоянного расширения своих знаний и навыков. Короче говоря, Фейнман научит вас не только тому, как учиться, но и тому, как по-настоящему понимать.
Приятного чтения!
Всего голосов 85: ↑74 и ↓11+63
Комментарии106

Погромист. Мои самые эпичные провалы за всю карьеру

Время на прочтение13 мин
Количество просмотров103K

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

Забавно, но в то же время я люблю, когда критикуют меня самого, потому что именно в такие моменты я что-то начинаю понимать, развиваюсь и становлюсь лучше. А в этой статье я решил совместить приятное с забавным и рассказать вам о своих самых идиотских решениях и самых эпичных провалах за свою карьеру программиста - такая вот само-критика. Возможно, кто-то узнает себя, а если нет, то я просто прошу вас: не делайте так же, как делал я.

Читать далее
Всего голосов 287: ↑278 и ↓9+269
Комментарии204

Как «Ревущий Котёнок» с Reddit заработал 28.500% на акциях GameStop: объясняю простым языком

Время на прочтение9 мин
Количество просмотров137K

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

Читать далее
Всего голосов 244: ↑241 и ↓3+238
Комментарии369

Делаем из Vim-а конфетку

Время на прочтение17 мин
Количество просмотров138K

Вы под давлением коллег или сокурсников из более успевающих групп решились на отчаянный шаг, способный разделить вашу жизнь на период "до" и "после" (прошли vimtutor), и теперь не знаете что делать с вашими новообретёнными способностями? А может вы всё ещё сидите в какой-нибудь IDE и в ус не дуете зачем вам "эти ваши программистские блокноты" и "какой-то там Vim"? Тогда присаживайтесь поудобнее и налейте себе лимонад, сейчас я вам всё по полочкам разложу.


Читать дальше →
Всего голосов 54: ↑50 и ↓4+46
Комментарии252

Каково это — быть разработчиком, когда тебе сорок

Время на прочтение18 мин
Количество просмотров229K
Примечание от переводчика:

Этот пост был написан и опубликован на Medium разработчиком приложений Адрианом Космачевским из Швейцарии. Кроме подготовки перевода его публикации, я также пригласил и самого автора, Адриана ( akosma ), на Хабр, для того, чтобы он смог лично ответить на любые вопросы участников сообщества, если таковые возникнут. Думаю, для общего удобства при общении в комментариях с ним стоит использовать английский (и, при желании, дублировать на русском).



Привет всем, я — сорокадвухлетний программист-самоучка, а это моя история.

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

image

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

Я дебютировал в роли разработчика программного обеспечения в 10 часов утра 6 октября 1997 года, в городе Оливос, к северу от Буэнос-Айреса, в Аргентине. Был понедельник. Не так давно я праздновал свой 24-й день рождения.

Мир в 1997 году


Тогда он был немного другим. На веб-сайтах не было предупреждений об использовании cookie. Новаторскими в сети были сайты вида Excite.com, а моим любимым поисковиком был AltaVista.

Мой электронный ящик имел вид kosmacze@sc2a.unige.ch и был расположен на личном веб-сайте, который размещался по адресу http://sc2a.unige.ch/~kosmacze. Тогда мы еще оплакивали принцессу Диану, а Стив Джобс только-только вернулся на роль CEO и убедил Microsoft «вбросить» в Apple Computer 150 миллионов долларов. Digital Equipment Corporation подала в суд на Dell, останки Че Гевары вернули на Кубу, только начался четвертый (!) сезон «Друзей». Был убит Джанни Версаче, скончались Мать Тереза, Рой Лихтенштейн и Жанна Кальман. Люди зависали за Final Fantasy 7 на PlayStation, будто бы были наркоманами, Би-Би-2 начал вещание телепузиков, а Кэмерон только собирался показать миру свой «Титаник».
Читать дальше →
Всего голосов 200: ↑194 и ↓6+188
Комментарии321

Информация

В рейтинге
Не участвует
Откуда
Финляндия
Зарегистрирован
Активность