Как стать автором
Обновить
26
0
Павел Вирский @Paaashka

Инженер, тимлид и шкипер

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

И наоборот, там же доводилось работать с людьми, которые очень сильно просели в опыте разработки в виду того, что долго просидели на одном месте

Они там не "просидели". Они там работали. Но современное айти - это не про работу. Это про прокачивание скилла в хайповых технологиях чтобы через годик-другой слинять куда-нить с повышением. А всё гавно за ними потом разгребают вот те самые которые "просидели", ога.

Уже больше года практически везде использую editor.js от ребят из vc.ru и иже с ними, всем доволен, плюс сделать связку с react, vue или ещё с чем достаточно просто.

архитектор бывает разный.
У меня например есть опыт в трех как-бы ипостасях:
1. Поддержка Sale — ответы на RFP, участие в исследованиях ИС и проблем заказчика, проектирование высокоуровневой архитектуры и передача ее для дальнейшей разработки и переход к следующему проекту.
Обычно такие люди есть в крупных оутсорсах или вендорах.
2. Архитектор-разработчик — может выполнять роль в Sale и потом стать частью команды с экспертными знаниями и знаниями что нужно сделать. При это сам кодит и Proof Of Concept и для продакшн тоже может. То есть тут надо быть экспертом в технологиях, которые будут использоваться и писать на уровьне senior.
3. Архитектор больших систем — продуктов или решений уровня предприятия. Это эксперт по здоровенной системе, который оценивает риски, трудозатраты на ранних этапах хотелок бизнеса, потом описывает изменения в куче подсистем, отдает в разработку и потом они ходят каждые полчаса чего-нибудь спрашивают :) Тут можно не быть спецом в технологиях — я успешно работал 7мь лет архитектором в компаниях, где основной код это Java, хотя сам не написал ни одной строчки на ней для промышленной эксплуатации.

И для каждого из этих типов архитеторов будет разный день/месяц/спринт.
но всем им надо уметь общаться и с заказчиком и с разработчиками, уметь преобразовывать информацию от заказчика в документы, проектировать системы(диаграммы, тексты, примеры), доносить свои проекты до разработчиков, отвечать на вопросы, вселять уверенность в успехе, быть арбитром между разрабами, выдавать оценки, считать и подсвечивать риски, помогать планировать проекты и спринты менеджерам, ходить на совещания, иногда делать что-то руками (очень желательно, хотя и не обязательно)
Использование длинных классов, хотя нужна только малая часть класса
// тут длинный код на 1000-2000 строк


Жесть.
Да даже если ваша приложуха будет отвечать за 50 мс, то такой код держать нельзя.
Мне кажется вам надо срочно вот сюда codeclimate.com
С принтерами всё просто на самом деле.
Браузер сам по себе может печатать на принтер, а на какой уже не важно.
В браузере убираются поля и всё-всё-всё лишнее, подгоняется под нужный формат.
.print() -> пошла печать. Что бы окна не вылазили настраивается silient_print в about:config (или как то так называется).
Всё работает на отлично, проверено. Отправкой данных на сам принтер занимается ось.
НЛО прилетело и опубликовало эту надпись здесь
Я фрилансил уже давно. Зарабатывал от заказа до заказа. Были крупные проекты, растянутые на месяцы, были времена безрыбья, когда денег не было вообще. Разумеется, я мечтал свалить из «этой страны», работать в мило обставленном офисе за 27 дюймовом IPS монитором, а во время перерыва пить ароматный кофе, любуясь на вид города. ЧСВ Самомнение было тоже на уровне: нос не задирал в личном общении, но считал себя расталантливым на все руки мастером с утонченным взглядом и т.д. и т.п. Поверьте, картина была настолько узнаваемая и характерная для многих фрилансеров-одиночек, что даже вспоминать смешно.
Как бы я не надеялся на улучшение дел они не менялись. В такой картине мира дела должны были измениться извне. Нечто должно было произойти само и тогда дело сдвинется с места. Товарищ по делам найдет крутого заказчика, кто-то придет через портфолио и предложит крутой заказ. Но это не происходило, было некоторое броуновское движение, случайные флуктуации, и я это понимал. Напряжение росло вместе с недовольством от жизни, ничего не менялось и не исправлялось, росла обида на мир (не смейтесь, это характерная вещь для людей и они искренне не понимают подвоха) типа я такой клёвый, но пропадаю без дела.

Потом я пошел к психологу. Не шарлатату, «целителю», а к конкретному такому дядьке с образованием. Ну и за три месяца групповых занятий (где встретились и другие дизайнеры :) постепенно приходило понимание, все мои хотелки и разочарования имеют одну почву — безосновательные требования к миру в духе «Вынь да полож». «Это не я потерял пароль от сайта, это разработчики скайпа сделали плохую историю и пароль пропал, потому что был в сообщении», «Дела идут фигово, потому что нет заказов, такой сезон». «Я ленивый, потому что родители не очень меня жестко контролировали», «Я не изучаю новые технологии, потому что нет нормальных книг» и т.п. Затем по мере занятий пришло неприятное принятие правды. Словно со стороны себя увидел. Так как мы привыкли критиковать других, беспристрастно высмеивая.
Сейчас ситуация выправляется, стресс, внутреннее напряжение уходят вместе с прокрастинацией. ЧСВ упало, но возросло спокойствие. Выросла ответственность за свои дела. Я знаю, что буду кушать так вкусно как я поработаю.

Всех тонкостей не рассказать в одном посте но мне кажется нужно упомянуть вот эти моменты.

1) Не клеймите всю свою личность ярлыком типа «я лентяй» или «я ненадежен», вы ведь готовы усердно делать что вам нравится. Например, строить в майнкрафте (не смейтесь) или что-то еще знакомое только вам. Например, я могу пять шесть часов ждать нужный кадр стоя ночью в болоте. В эти моменты вы усердны и сосредоточенны.

2) Не отмахивайтесь от себя формулировками «ничего не поможет, уже пробовал», «уже поздно». Самая важная ценность в жизни это вы сами. Даже если вы считаете, что потратили много времени и убили здоровье, время проведенное на реализацию вашей мечты покроет с лихвой годы жизни. Моя ситуация вовсе не такая драматичная, но есть люди, буквально расцветавшие в сорок лет в пятдесят и их успехи и получаемый кайф от жизни перекрывали всё. А как мощно ваше развитие мотивирует родственников это похоже на волшебство. В семье и в вашем коллективе словно открывается клапан и напряжение уходит.

3) Если не получается это нормально. Невозможно научиться тайм менеджменту прочитав одну книгу и за три дня. По чайной ложке делайте так, как вы хотите жить. Чем выше ступенька куда надо прыгнуть тем выше стресс. Резкие порывы поведения, в духе «завтра бросаю пить и курить и иду плавать» будет очень высокой ценой. Замените сложную цель на цепочку из десяти простых: курить на полпачки меньше и ходить пешком на километр больше.

Буду рад, если кому-нибудь поможет.

Спасибо за очередной хороший выпуск.

В дополнение может кому понадобится подборка хороших практик от William Durand:
PHP slides
PHP extended slides
В общем ничего сложного в заказе в Финляндию:
заказываю все из Америки, с любых магазинов (карта Visa Classic либо пейпал) на адрес shipito.com. После этого консолидирую все в одну большую посылку и доставляю до востребования (poste restante англ.) на центральное почтовое отделение Лапеенранты, что близ границы.

Вот адрес, который нужно указывать:

Poste Restante
53100 Lappeenranta
Finland


Если посылка до 150 баксов — забираю на почте, если больше — забираю в Tulli Customs (почтовая таможня), находится как раз по дороге к Лаппеенранте. На границе просто смотрят что все ок, и я не везу наркотики, змей, оружие, алкоголь и прочее запрещенное, и пропускают. Из расходов — только 1000 рублей туда-обратно на дорогу, при этом сама доставка посылки дешевле чем в Россию.

Только не забывайте что для посылок больше 150 баксов — нужно иметь с собой немного налички (30% от стоимости), чтобы оплатить залог за посылку. Этот залог вам вернут на границе у кабинки Tax Free.

Вот здесь расписано подробно:
ru.shipito.com/lappeenranta/

PS: Советую заранее заполнить на сайте финской почты декларацию — сэкономите примерно час времени в финляндии :)
ИМХО Неверная оценка проекта.

Если объект автоматизации ранее не имел формализованных процессов и представлений о точках принятия решений, то ТехЗадание стоит 60% от бюджета автоматизации.

Автор вроде как оценил работу в 10% исследование и ТЗ и 80% собственно проектирование-кодирование и, наконец, 10% внедрение — условно 100'000руб.

Школиё (да и заказчик с подачи автора) видит
10'000руб (неосязаемо)
+80'000руб (о! бюджет!)
+10'000руб (несущественно)
И, естественно, утверждает, что победит кодирование в пределах 10'000руб, то есть в 8 раз дешевле кодирования.

На самом деле расклад таков:
60'000руб исследование и ТЗ (наука!),
25'000руб проектирование-кодирование (это понятно),
15'000руб внедрение (грабли! требуются внимание и усилия!).

И, на самом деле, школиё кодирует вдвое дешевле, а не в восьмеро (10'000 против 25'000).

Более того, 10'000 внедрения на фоне 80'000 разработки теряются и кажутся несущественными.

В правильной смете внедренческие 10'000 на фоне 25'000 разработки будут сильно бросаться в глаза, оспариваться. обсуждаться и запоминаться в мосхе надолго.

И шеф спросит своё школиё как же он 10'000 халтуру соберётся внедрять не требуя уже оговоренных внедренческих 10'000.

Уж не говоря о том, что сэкономить 15'000 (25 минус 10) из 100'000 с неизвестными гарантиями шеф просто побоится.

Мотайте на ус, документируйте ваше горе в базу знаний, чтобы вторично не вступить.
Есть ещё один способ расслабления глаз, на мне работающий хорошо.
Что надо сделать: закрыть глаза (желательно, ещё и ладонями от света прикрыть) и попробовать в этой темноте (?) представить себе черную точку. Просто черную точку, не знаю как объяснить :) Надо стараться представить её себе как можно более чёрной, и как можно более мелкой.
Для себя я чувствую эффект через 30 секунд…
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Первая попавшаяся ссылка ameth.ru/page/howto-plug-3g-modem-huawei-e150
Подключал таким образом 3g модемы к планшетам на android.

Параллельная простая, справа. Если провода изоляцией прижать друг к другу, то куда ей ломаться?
И как у вас с буквой ё дела обстоят?
хинт www.sphinxsearch.com/forum/view.html?id=5401
НЛО прилетело и опубликовало эту надпись здесь
1. ставим fail2ban (например yum install fail2ban)
2. создаем файл nginxaccess.conf в /etc/fail2ban/filter.d (содержимое из pastebin.com/NiR1E0qj)
3. создаем файл blackhole.conf в /etc/fail2ban/action.d (содержимое из pastebin.com/k4BxrAeG)
4. редактируем файл /etc/fail2ban/jail.conf в самый конец записываем содержимое из pastebin.com/n7eAhbxD, редактируем параметр logpath — должен указывать путь к access логу nginx, нормально обрабатывает ситуации с ротацией логов.
Ну и смотрим вначале файла jail.con строчку ignoreip = 127.0.0.1 — добавляем в нее свои ip адреса на всякий случай.

Последним пунктом перезапускаем fail2ban: service fail2ban restart

И идем пить чай ,) и через некоторое время смотрим в /var/log/fail2ban.log — сообщения о банах или смотрим список командой: ip route show | grep blackhole

Можно поиграться параметрами findtime и maxretry — задают жесткость критериев по которым определяются ддосеры (150 запросов к бэкендну на протяжении 60 секунд — критерий в примерах)

fail2ban демон достаточно гуманно потребляет ресурсы CPU и памяти даже на высокопосещаемых проектах. (в отличие от awk/grep/скриптов) А бан через blackhole работает хорошо с большим списокм ip в бане (в отличие от бана по iptables, который начинает есть много CPU на больших таблицах)
0. хватит шишек:
0.1. велосипедам — нет! используем известные библиотеки\фреймворки, где уже многое исправлено
0.2. своевременный апгрейд
0.3. логи и мониторинг подозрительной активности.

1. входные данные для каждого слоя:
1.1. слой контроллера (код): фильтрация данных из суперглобалов (всех)
1.1.1. инициализация данных, мусор может быть вредным (например, те же автоглобалы)
1.2. слой модели\данных (sql): используем prepared statements или иные placeholders, хотя бы экранизацию(escaping)
1.3. слой вида (html): используем escaping везде, где требуется вывод данных
1.4. слои не должны доверять друг другу и полагаться, что не придут вредные данные.
1.5. минимизация функциональности: делать что нужно и не больше (например, для отдачи файла НЕ надо его исполнять).

2. фильтрация данных:(xss+code\sql injection)
2.1. до максимально узкого значения. например, если должно быть число, пытаемся кастить в число.
2.2. до более широкого диапазона можно прогонять через регулярки. не забываем про длину.
2.3. если данные исчислимы (выбор из списка), то сопоставить реальным данным числовой идентификатор.
2.4. не перестараться, не портить данные «универсальными» чистками.

3. аутентичность:
3.1. минимальный срок жизни данных:
3.1.1. используем сессионные данные, для доступа используем трудноугадываемый идентификатор
3.1.2. для подтверждений: длинный ОДНОРАЗОВЫЙ ИД.
3.1.3. логин, повышение прав: регенерация ИД, подтверждение пароля (session hijacking)
3.1.4. формы и иные stateful запросы также имеют одноразовый ИД (csrf,request\form spoofing)
3.2. в зависимости от важности данных устанавливаем сложность проверки юзверя (двухфазный вход, генераторы паролей, заставляем сложные пароли)
3.3. права доступа (как ФС, так и системные)

4. client is evil:
4.1. ничего не храним на клиенте, даже в зашифрованном виде. максимум — session id в куках
4.2. валидация на клиенте бессмысленна, только для удобства пользователя
4.3. не полагаемся на данные об ОС\браузере\…
4.4. шифрование на клиенте бессмысленно, но необходимо (если вдруг что-то увели)
4.5. имена файлов, другие пароли и явки — ложь.

5. DoS предупреждение:
5.1. слишком длинные данные + размер загружаемых данных (картинки, например)
5.2. много неудачных попыток входа
5.3. много загрузок
5.4. много запросов, добавляющие данные (напр.комментарии)

6. О шифровании:
6.1. все пароли (в базе) — в виде хешей с солью, проверить на криптостойкость и коллизии.
6.2. для чувствительных данных — шифрование потока по HTTPS\SSL c коротким expiration
6.3. не храним данные в файлах, особенно — в открытом виде.
6.4. статика — отдельно от динамики, с соотв. правами доступа (либо читать, либо выполнять, либо писать)
6.4.1. желательно — статика очень отдельно от динамики (др. сервер, папка, за пределы корня) т.е. чтобы не пересекались

7. Лишнее:
7.1. ничего лишнего — например, никаких .svn, паролей, чеклистов, туду и вообще не жизненно важного для работы.
7.2. никаких инфо-заголовков — об используемом софте, версиях, путях, файлах, именах
7.3. никаких сообщений об ошибках, кроме подсказок юзверю, что он делает не так и что ему делать так.
7.4. источник должен быть виден, исключить возможность подделок, пример:
7.4.1. комментарии должны выглядеть как комментарии и не иначе
7.4.2. в заголовке всех окон ввода — четко имя сайта и функция, должно быть узнаваемо.
7.5. лучше использовать pretty urls — и для удобства, и сокрытия данных.
1

Информация

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