Как стать автором
Обновить
0
0
Колян @mrbig66

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

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

Семь лет работы разработчиком: какие уроки я извлёк

Время на прочтение 3 мин
Количество просмотров 21K
Время летит, правда?

Моя карьера началась в 2012 году, с первой стажировки по C++. Честно говоря, я понятия не имел, что делаю (на самом деле, ничего не изменилось). Однако я извлёк несколько уроков.

Отказ от ответственности: в этом сообщении не будет никакого кода.

Вопрос: Какой самый важный язык в программировании?


Это английский. Или испанский, китайский, польский. Любой, какой вы используете для общения с коллегами.
Читать дальше →
Всего голосов 37: ↑32 и ↓5 +27
Комментарии 14

Музыка в День космонавтики

Время на прочтение 4 мин
Количество просмотров 15K
Традиционно на 12 апреля я размещаю в соц. сетях песню «Fire in the Sky», одну из моих самых любимых на космическую тему и прекрасно подходящую к празднованию Дня космонавтики. Но это далеко не единственная отличная композиция на космическую тему. Музыка может менять наше состояние, радовать, печалить или погружать в задумчивость. Предлагаю отметить этот День космонавтики путешествием в космический «полуабстрактный мир, нечувствительно сконструированный поколениями композиторов» (братья Стругацкие).


Всего голосов 36: ↑34 и ↓2 +32
Комментарии 52

Насколько надулся пузырь зарплат у программистов?

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

Фото: zacktionman

TL;DR

  • Рядовые программисты в топовых IT-компаниях теперь зарабатывают $300−400 тыс. в год.
  • Во многом это обусловлено высокой ценой акций.
  • Другие карьерные пути кажутся «труднее» и достойно не оплачиваются.
  • Может ли это длиться вечно?

Я ушёл из Google ещё в 2012 году и основал свой стартап. Конечно, свою роль сыграли престиж и желание заниматься любимым делом, но главная причина — деньги. Я мечтал разбогатеть и никогда больше не работать.

По иронии судьбы, если бы я остался в Google, то выиграл бы материально. Я ушёл прямо в начале волны. В январе 2012 года цена акций Google составляла $300. Теперь она превышает $1000 и достигала даже $1200. У других IT-компаний похожая ситуация, что надуло зарплаты рядовых инженеров до невиданного уровня.
Читать дальше →
Всего голосов 123: ↑111 и ↓12 +99
Комментарии 749

Древности: Интернет 1999 года в 20 скриншотах

Время на прочтение 7 мин
Количество просмотров 92K
Мы не умеем хранить данные. Нет, от лица отдельно взятого пользователя — немного умеем. Как работники компании — тоже можем, в виде бэкапов, резервирования и прочего. А вот так, чтобы в любой момент можно было прокрутить цифровую машину времени лет на двадцать назад — так не умеем. Я уже как-то писал о своем собственном цифровом архиве: он начинается в 2002 году, а вот информации про первое десятилетие моей цифровой жизни почти не сохранилось. Разве что спектрумовские игры на кассетах.

Я не утверждаю, что обязательно нужно все хранить. Но в моем маленьком компьютерно-электронном хобби иногда хочется взять ноутбук 1999 года выпуска, подключить его к сети и посмотреть, как оно там было, в интернете двадцатилетней давности. Это непросто, хотя и возможно. Сегодня — рассказ о том, как это можно сделать, и подборка аутентичных скриншотов веба конца второго тысячелетия.
Всего голосов 119: ↑117 и ↓2 +115
Комментарии 179

Введение в GitLab CI

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

Публикую перевод моей статьи из блога ГитЛаба про то как начать использовать CI. Остальные переводы гитлабовских постов можно найти в блоге компании Softmart.




Представим на секунду, что вы не знаете ничего о концепции непрерывной интеграции (Continuous Integration — CI) и для чего она нужна. Или вы всё это забыли. В любом случае, начнем с основ.


Представьте, что вы работаете над проектом, в котором вся кодовая база состоит из двух текстовых файлов. Более того, очень важно, чтобы при конкатенации этих файлов в результате всегда получалась фраза "Hello world." Если это условие не выполняется, вся команда лишается месячной зарплаты. Да, все настолько серьезно.


Hello wolrd


Читать дальше →
Всего голосов 45: ↑44 и ↓1 +43
Комментарии 21

Древности: компьютерная реклама 1997 года

Время на прочтение 5 мин
Количество просмотров 32K
Старые устройства, переносные и настольные, нужно рассматривать в контексте — собственных пожеланий из молодости или же особенностей тогдашнего рынка околокомпьютерного железа. Это сделать непросто, но когда пытаешься, простое собирание гаджетов расширяется в настоящее архивное дело. Впрочем, в моем случае это лишь приятный бонус к устройствам. Например, моя экскурсия в мир аудиокассет привела к появлению ящика лент, на которых в девяностых были записаны джазовые передачи европейской радиостанции. Вот кто их писал? И зачем?


Следствием недавнего изучения минидисков стала сотня носителей с тяжелой металлической музыкой, кем-то когда-то собранная и оформленная по высшему разряду. Это живые примеры использования того или иного устройства или формата. Чтобы воссоздать в голове обстановку двадцатилетней давности или раньше, я еще использую архивы старых СМИ, и про это регулярно пишу у себя в канале. Но то зарубежные издания, а сегодня я покажу нашу, отечественную рекламу из журналов и буклетов 1997 года, с выставки Комтек.
Читать дальше →
Всего голосов 62: ↑62 и ↓0 +62
Комментарии 78

Очередное руководство по уменьшению бойлерплейта в Redux (NGRX)

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


О чем пойдет речь?


Будем о говорить о нескольких (пяти, если быть конкретным) способах, трюках, кровавых жертвах богу энтерпрайза, которые вроде как должны помочь нам писать более лаконичный и выразительный код в наших Redux (и NGRX!) приложениях. Способы выстраданы потом и кофе. Просьба сильно пинать и критиковать. Будем учиться кодить лучше вместе.

Читать дальше →
Всего голосов 11: ↑6 и ↓5 +1
Комментарии 28

Смешные и грустные истории про разработку компьютерных игр

Время на прочтение 6 мин
Количество просмотров 46K
Только через смех можно рассказывать, как плоды долгой и упорной работы распространяются по всем компьютерам страны, но не приносят ни капли дохода. Только улыбка поможет принять хорошее, честное предложение распределения прибыли 1 к 12, где 1 — разработчику, а остальное агрегатору. И трудно слегка не загрустить, слушая о том удивительном времени абсолютно пустого рынка мобильных игр и почти азартном энтузиазме разработчиков. И, наверное, только у Вадима Башурова (PapaBubaDiop) такой длинный путь и невероятный опыт, чтобы иметь в запасе множество невыдуманных смешных и грустных историй.

Так уж повезло, что по случаю тридцатилетнего юбилея своей первой игры, Вадим пришел на Apps Conf. Да, когда вышла самая популярная игра того времени, многие из нас еще не родились, а ныне уважаемые Head of mobile пешком под стол ходили. Но каждый, кто в начале 90-х видел компьютер, видел и игру «Поле Чудес» и думал, что же такое Арзамас.

Всего голосов 72: ↑69 и ↓3 +66
Комментарии 37

Безумие и успех кода Oracle Database

Время на прочтение 4 мин
Количество просмотров 79K
На этой неделе пользователи Hacker News решили обсудить вопрос «Каков максимальный объем плохого — но при этом работающего — кода вам доводилось видеть?» (позже к ним присоединились и пользователи Reddit). В комментариях было рассказано немало «веселых» историй про то, с чем мы все время от времени сталкиваемся; но больше всего внимания привлек рассказ про код «передовой СУБД, которую используют большинство компаний, входящих в список Fortune 100».

Победителем в номинации «лавкрафтовские ужасы» заслуженно стал рассказ бывшего разработчика Oracle, который работал над Oracle Database в период разработки версии 12.2. Объем кодовой базы СУБД на тот момент составлял 25 миллионов строк на языке C — и стоило вам изменить лишь одну из этих строк, как ломались тысячи написанных ранее тестов.

За прошедшие годы над кодом успело потрудиться несколько поколений программистов, которых регулярно преследовали жесткие дедлайны — и благодаря этому код смог превратиться в настоящий кошмар. Сегодня он состоит из сложных «кусков» кода, отвечающих за логику, управление памятью, переключение контекстов и многое другое; они связаны друг с другом при помощи тысяч различных флагов. Весь код связан между собой загадочным макросом, который невозможно расшифровать, не прибегая к помощи тетради, в которую приходится записывать, чем занимаются релевантные части макроса. В итоге, у разработчика может уйти день или два только на то, чтобы разобраться, чем же в действительности занимается макрос.
Читать дальше →
Всего голосов 82: ↑81 и ↓1 +80
Комментарии 160

Триумф и трагедия «Бурана»

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


Ровно 30 лет назад с космодрома Байконур на ракете-носителе «Энергия» в свой единственный полёт отправился корабль «Буран». В полностью автоматическом режиме он совершил 2 витка вокруг Земли и успешно приземлился спустя 205 минут. Это стало несомненным триумфом советской космонавтики, впервые в мире сумевшей посадить многоразовый космоплан в автоматическом режиме на землю.

Но спустя всего год работы по проекту были приостановлены, а в 1993 году — и вовсе прекращены. В 2002 году единственный летавший в космос «Буран» был навсегда погребён под обломками цеха в котором хранился. Об предпосылках к появлению проекта «Энергия-Буран», его ходе и печальном завершении, пойдёт сегодня речь.
Всего голосов 143: ↑142 и ↓1 +141
Комментарии 433

CI для фронтенда: Gitlab, Traefik, Docker

Время на прочтение 4 мин
Количество просмотров 15K
В каждом уважающем себя проекте должны участвовать QA инженеры. Ежедневно перед ними будет стоять задача проверки выполнения задач в отдельных ветках. Очень часто процесс перехода на нужную ветку, сборки и тестирования занимает много времени, к тому же, локально не всегда возможно полностью воссоздать максимально идентичное боевому окружение.

Цель данной статьи — показать простую технику настройки стенда на несколько веток. Данная статья написана разработчикам от разработчика, поэтому вряд ли будет представлять существенный интерес для профессиональных DevOps инженеров.
Читать дальше →
Всего голосов 14: ↑12 и ↓2 +10
Комментарии 11

Блеск и нищета 1С для интернет-магазина. Блеск золота для франчайзи и нищета функционала для пользователя

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

TL;DR или ВКРАТЦЕ: Статья рассказывает о том, что ожидать от использования системы 1С для интернет-магазина. Все знакомы с картинкой-мемом «ожидание-реальность». Автор работает в давно функционирующем интернет-магазине без единой товаро-учетной системы (эксель, макросы и прочий хардкор). Автор поэтому имеет представление нормальной схемы работы интернет-торговли и хорошо сформированное «ожидание» от внедрения нового ПО, а в статье рассказывается как неприглядна «реальность» при внедрении 1С даже для небольшого интернет-магазина.

Читать дальше →
Всего голосов 67: ↑60 и ↓7 +53
Комментарии 540

Уходя — уходи? Ночной разговор об увольнениях

Время на прочтение 6 мин
Количество просмотров 119K
Нашло. Нет, накатило. 7 мест работы, 7 перемен, и ещё неизвестно, что впереди — увы, в мире корпораций нет такого, чтобы раз — и навсегда, одна запись в трудовой, одна любовь и полностью отданные душа и ум. Сейчас всё круто и завтра утром я с радостью выйду в офис, но who knows, who knows, не всё зависит от нас с вами. Так вот, увольнения бывают разные: плохие, хорошие, вынужденные, скандальные. А давайте обсудим, как оно бывает, как уйти красиво или не уйти вовсе.


Читать дальше →
Всего голосов 115: ↑105 и ↓10 +95
Комментарии 659

Легенда о Фреймворке Всевластия

Время на прочтение 11 мин
Количество просмотров 13K
В последнее время набирает популярность тренд «исчезающих фреймворков», локомотивом которого, без сомнения, можно считать SvelteJS — buildtime-фреймворк и компилятор в ванильный javascript.

Несмотря на то, что концептуально Svelte весьма прост, а в использовании еще проще, многие разработчики задаются вопросом, в чем же killer-фича данного фреймворка, да и подхода в целом? Почему это не «yet another javascript framework»?

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

Давайте разберемся, но сначала я расскажу вам одну легенду…


Читать дальше →
Всего голосов 33: ↑24 и ↓9 +15
Комментарии 12

Пишем компонент с «материальными» кнопками для Svelte

Время на прочтение 3 мин
Количество просмотров 5.8K
Вдохновившись статьями SvelteJS: Релиз второй версии, Исчезающие фреймворки и Re: «Сравнение JS-фреймворков: React, Vue и Hyperapp», про «исчезающий» фреймворк Svelte (читается «свелт»), я захотел его попробовать. И, для начала, решил написать небольшой компонентик с кнопками из Materialize.
Читать дальше →
Всего голосов 10: ↑10 и ↓0 +10
Комментарии 2

UI framework за 5 минут

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

Некоторое время назад я задумался, почему так много UI frameworks для web? Я довольно давно в IT и не помню чтоб UI библиотеки на других платформах рождались и умирали с такой же скоростью как в WEB. Библиотеки для настольных OS, такие как: MFC, Qt, WPF, и т.д. — были монстрами, которые развивались годами и не имели большого количества альтернатив. В Web все не так — frameworks выходят чуть ли не каждую неделю, лидеры меняются — почему так происходит?


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

Читать дальше →
Всего голосов 20: ↑18 и ↓2 +16
Комментарии 23

Как использовать Routing в Ext JS 5

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

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

Routing в Ext JS 5


Ext JS всегда позволял обрабатывать историю навигации при помощи класса Ext.util.History, но в Ext JS 5 мы сделали этот процесс ещё проще и гибче. Роутер предоставляет простую конфигурацию связи хэш-токенов и методов контроллера с поддержкой параметров и контролем выполнения маршрута (за кулисами используется Ext.util.History). Посмотрим на простой пример:

    Ext.define('MyApp.controller.Main', {
        extend : 'Ext.app.Controller',
 
        routes : {
            'home' : 'onHome'
        },
 
        onHome : function() {}
    });

Читать дальше →
Всего голосов 17: ↑15 и ↓2 +13
Комментарии 5

«Герои Меча и Магии» в браузере: долго, сложно и невыносимо интересно

Время на прочтение 22 мин
Количество просмотров 103K
Как реализовать в браузере игру, на которой годы назад залипал без всякого браузера? С какими сложностями столкнёшься в процессе, и как их можно решить? И, наконец, зачем вообще это делать?

В декабре на конференции HolyJS Александр Коротаев (Tinkoff.ru) рассказал, как он сделал браузерную версию «Героев». Ранее уже появилась видеозапись доклада, а теперь для Хабра мы сделали ещё и текстовую версию. Кому удобнее видео — запускайте ролик, а кому текст — читайте его под катом:

Читать дальше →
Всего голосов 214: ↑210 и ↓4 +206
Комментарии 63

Пишем свою IDE со встроенным дизайнером интерфейсов на PHP и ExtJS

Время на прочтение 13 мин
Количество просмотров 27K
В статье рассматриваются концепты создания IDE и дизайнера интерфейсов с использованием ExtJS и PHP. С одной стороны, создание подобных редакторов довольно редкая задача, с другой — концепты и приемы можно использовать для создания различных визуальных конфигураторов.


Как написать свою IDE со встроенным дизайнером интерфейсов, как сделать это быстро и с минимальными усилиями? Именно такой вопрос возник однажды в проекте, использующем связку ExtJS и PHP. Горящие сроки, растущая очередь задач. Список заданий ежедневно пополняется огромным количеством форм ввода, таблиц и отчетов, все это необходимо обрабатывать, фильтровать и отображать для пользователя.

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

Беглый поиск выдал Ext Designer (Sencha Architect) — интересный и полезный инструмент (Ext MVC еще не существовало). Ext Designer так и не помог решить поставленные задачи, но обо всем поподробнее.
Читать дальше →
Всего голосов 51: ↑42 и ↓9 +33
Комментарии 15

Нюансы MVVM в Ext JS при разработке компонентов

Время на прочтение 13 мин
Количество просмотров 22K
Всем привет. Прошло немало времени с момента выхода Ext JS 5, где представили возможность разработки приложений с использованием паттерна MVVM. За это время я успел столкнуться с некоторыми трудностями, о которых хотел бы рассказать.

Начну с того, что в Ext JS 4 (а предварительно в Sencha Touch) при создании компонентов их конфигурационные свойства объявлялись в объекте config, для каждого из которых автоматически создавался свой getter и setter. Несмотря на то, что вручную писать все обработчики могло быть несколько утомительно, это был стандартный подход.

В пятой же версии Ext JS используя MVVM можно было легко избавиться от доброй части рутины: удалить конфигурационные свойства и их обработчики, а вместо этого привязаться к нужному свойству или формуле ViewModel'и. Кода становилось значительно меньше, а читаемость — лучше.

Но меня беспокоил вопрос инкапсуляции. Что если в процессе разработки часть функциональности я захочу вынести в отдельный компонент для повторного использования? Нужно ли при этом создавать собственную ViewModel? Как изменять состояние компонента: обращаться напрямую к его ViewModel'и или всё-таки стоит использовать конфигурационные свойства и их публичные setter'ы?

Мысли об этом и других вопросах, а также примеры с напильником — под катом.
Читать дальше →
Всего голосов 7: ↑7 и ↓0 +7
Комментарии 4

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность