318

Во все тяжкие: Веб-разработчик с нуля. 5 месяцев

Во все тяжкие: Веб-разработчик с нуля. 5 месяцев IT, Программирование, Карьера, Javascript, Веб-Разработка, Frontend, Web, Длиннопост

Привет!! Давно не виделись, мой друг!

Целый месяц я блуждал по священному гуглу в поисках frontend-грааля, но так его и не нашел.

Я не увидел вечной жизни дэв-сервера, и не были прощены мои грехи после перехода с windows на linux.

Ну, да ладно, обо всем по порядку..


Цель — Senior Frontend Developer.

Язык: JavaScript.

Возраст: 28 лет;

Работа (настоящее время): Junior Frontend Developer (контракт на 3 месяца).


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


Вспоминаю свой режим 4 месяца назад и диву даюсь, как у меня это получалось. Ложиться в 00:00 - 01:00 и вставать в 06:00? Пфф.. да ты гонишь. Сейчас еле поднимаюсь в 08:00 - 10:00. Ложусь при этом нормально, бывает и в 22:00 уже только пятки из-под одеяла торчат.


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


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


В целом, несмотря на расслабленность, месяц был продуктивный. Еще бы - столько времени, это не 2 или 3 часа в день. Сейчас у меня заканчивается подготовительный режим, я бы его назвал так. В нем я латаю дыры в знаниях, чтобы работать над проектом. Частично, конечно была проведена работа, сайт мною сверстан полностью, страницы разбиты на модули посредством шаблонизатора Blade, страницы локализованы(проект на Laravel). Прикручены скрипты на ванильке на верстку. Но недавно было принято решение все модули перенести на Vue, поэтому активно занимаюсь Vue. Много сделал тренировочных проектов по курсам, парочку из которых сможете найти на моем GitHub. Работа по проекту же у нас ведется через BitBucket. Впереди много работы, много приложений, которые мне предстоит написать для проекта в ближайшие два месяца.


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


1. Прочитал и протестил книгу Леа Веру - Секреты СSS. Много хаков по верстке. Рекомендую.

2. Прошел курс по командной строке. Да, после недельных мучений с VirtualBox, я полностью перешел с Windows на Ubuntu. И нарадоваться не могу, хоть еще не ко всему привык. Готовлюсь к MacOS.

3. Прошел курс "Операционные системы".

4. Прошел курс ко компьютерным сетям.

5. Прошел курс по PHP для самых чайников. Чтобы немного разбираться и читать код на PHP.

6. Прошел курс по протоколу прикладного уровня -  HTTP.

7. Прошел воркшоп по Webpack. С настройкой до сих пор трудности, УЪУ СЪУКА! кот.jpeg

8. Разобрался с шаблонизатором Blade. Который уже не особо нужен в проекте.. Хехе, фронтенд.

9. Прочитал вторую книгу YDNJS. Третью не осилил, отложил. Сложно, пока нет среднего уровня. Но эта серия книг как по мне, лучшая для понимания работы JS на довольно хорошем уровне.


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

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


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


Что касается английского:

1. Нашел курс, где нашел сами понимаете. Очень нравится. Материал структурированный и мощный :) Видео записаны из занятий в скайпе. Но мой уровень еще - Elementary.

2. Также прохожу вот этот курс, метод Пимпслера. Довольно забавный, но мне нравится, 30 минут в день для складирования в память бытовых фраз полезно.


Ограничения все снял.

Когда нужен будет рывок, перед трудоустройством в ноябре - введу.

За месяц выпил всего баночку пива, но скурил много кальяна. Полет нормальный.


Вот как-то так. С каждым днем мне кажется, что мои знания  и умения не увеличиваются, а уменьшаются. Так как всё больше и отчетливее вырисовывается подводная часть айсберга фронтенда. Самое сложое для меня на данном этапе не программирование, а настройка и разбор всей шаурмы, которая требуется, чтобы начать программировать (настройка сервера, окружения, сборщика проектов, шаблонов и т.д.). Иногда хочется орать на весь дом, почему же это с*ка не работает так, как должна работать. Но это, я думаю, нормально там, где требуется мозг для работы, а не просто руки. Быстро привыкаешь, разбираешься и становишься спокойнее.


Через месяц будет круглая дата - пол года, может чего приготовлю интересного для вас!)


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

До скорого!

Найдены возможные дубликаты

+14
У меня было так.
Увлекался, начал писать, немного автоматизировал работу(пару скриптов на node, я тогда был типа сео/эникейщик). Понял, что можно нарубить бабосиков в IT и решил стать QA(как раз был бум на них),но немного отклонился от плана и попал в интернатуру в одну крупную компанию, там натаскал angular(тогда только вышел второй), после - попал в маленькую галерку и почти год писал на angular js 1.6, потом попал в ещё одну галеру, но через два месяца убежал в ещё большую задницу и отработал там ещё 9 месяцев. Вот уже 4 месяца работаю в одной крупной конторе как фуллстак на ноде и реакте, дали макбучек и по пятницам мороженко - доволен.
Из всего, что я читал - это Фленаган с его толмудом по js, но я его не осилил до конца ибо нудно ппц. Всем известный сайт Ильи Кантора. Овер дохрена статей на медиуме, видосики разные на Ютубе, юдеми и прочих сайтах, немного писал на шарпе, с и срр, немного Пайтона, но другие языки кроме js - я не считаю как скил, сейчас я даже и не вспомню нихрена. Ну и окончил курс по алгоритмам и структурам данных.
Помогло ли мне это все? Я вот не знаю, у меня ощущения, что я как был идиотом который мог написать hello world, так и остался, только теперь меня все кличут мидлом,а не "ей ты у меня монитор не горит". Ощущение, что за два года, ну почти, опыта я научился гуглить и отлично копировать код своих коллег, подгоняя под мои нужды. И да, мне сейчас 29, через две недели 30 будет, начал воду мутить в 27 это что бы опередить вопросы типа - "ну в 28 это уже тяжело, а в 20 все легче", хуй его знает, я в 20 хуи пинал и как там оно - не знаю.
раскрыть ветку 5
+2

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

раскрыть ветку 3
+1
Я не понял, это ты просто под комментом моим написал для ТС или это ты мне ?))
раскрыть ветку 2
+1

Хорош)

+23
Как по мне первое время в сфере ІТ должно быть в офисе с коллегами. Дальше уже если уверен в себе делай что хочешь.
раскрыть ветку 21
+3

Да, менторы круто помогают.

+3

Если джун не ленивый - можно на удалёнке вырасти хорошо.
Я не просто так говорю.
Я тимлид респределённой команды - у меня джуны примерно за год в мидлы вырастают

раскрыть ветку 10
+3

За год в мидлы?  Вот прямо совсем сырые джуны?

раскрыть ветку 6
+3

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

+1

Как тимлид команды с джунами, хочу сказать, что удалённые джуны гораздо хуже, чем ближние

раскрыть ветку 1
0
Согласен
раскрыть ветку 8
+5
До 28 сентября успеваешь записаться на курс Rolling Scopes School к братьям-белорусам. Совершенно бесплатный курс по фронтенду (с менторами) на полгода. Я прошёл прошлый набор - очень рекомендую.
раскрыть ветку 5
+1

Было бы интересно узнать как собеседование прошло

раскрыть ветку 1
+12

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

+4
Работая в офисе быстрее развиваешься, так как всегда есть тот, кто подскажет или проведет за тобой рефакторинг, и ты увидишь альтернативные решения задач.
Если с настройкой webpack есть сложности, то всегда можно пользоваться готовыми шаблонами, со всеми настройками шаблонизаторов и препроцессоров, таких как - yeoman, полезная штука для быстрой развёртки проекта. Или на крайний случай parcel.
В основном, хорошие знания ванильного js, построение архитектур приложения и английского решают многие задачи. Зная js на хорошем уровни и читая документации и спецификации технологий (фреймворков, плагинов, библиотек и тд) решает многое.
+4

Ого. Неплохо ты запрогрессировал за полгода. А есть результат твоих трудов где руками потрогать?

раскрыть ветку 3
+1
Что найдёшь сейчас то на гитхабе, когда сайт выкатим с приложениями, все покажу
раскрыть ветку 2
0

А где гитхаб?

0

Я видимо совсем стар и плох, но: в посте куча умных названий, на гитхабе - форма с валидацией. Зачем весь огород было городить?

И заодно: вы прям совсем с нуля программированием сейчас занимаетесь?

+3
Работаю удаленно по тк. Оклад белый, опыт разработки 20 лет.
Встаю в 11, работаю до 18-19ч.
Ложусь в 2-3 ночи.

Работа спокойная, торопиться не надо. Хотя были компании с жёсткими сроками.

Удаленно работаю последние лет 8.
За это время выработал определенные вещи для комфортной работы.

Первое, это личный кабинет. Что бы не мешали дети и т.п.
Если будут отвлекать, то это сильно скажется на работе, не сразу.
Второе, само рабочее место должно быть наиболее комфортным, тут денег жалеть не стоит. Надо подобрать стол, кресло, монитор и нужную технику. (Вообще, я где-то лям потратил на кабинет)
Мышление, это одна из особенностей удаленной работы. Надо понимать, что если вы удаленно, это не значит свободу.
Вы работаете так же как и в офисе и так же общаетесь с командой, по средством голоса, текста, видео. У вас так же есть обязоности. С вами могут захотеть связаться в любое время.
раскрыть ветку 2
0
Зачем удаленщику ТК, разве это обязательно?
раскрыть ветку 1
0

ТК или ИП. Третьего не дано.
Хотя есть еще вариант по договору-подряда, но это уже ближе к фрилансу.

Что бы получать официальную белую зарплату, иметь больничный, отпуск и т.п., вы должны быть трудоустроены по нормам ТК.
Или у вас представление, что удаленщик чем то отличается от работника в офисе?
Если так, то вам надо вернутся из нулевых в текущее десятилетие =)

+5

Скажу вам как разработчик - зря вы так долго тратите на обучение - от этого толку очень мало, поскольку вы почти все уже забыли/забудете. А что не забыли вряд ли примените. Да и это не форум разработчиков если что, ну да ладно. Порог вхождения для разработчика фронтенд - html, css, js(ts).
написать страницу авторизации,отправить логин/пароль, сохранить токен,
получить данные юзера, вывод данных юзера
списка юзеров, и простая форма добавления юзера.

И все - это резюме отправить по всем вакантным местам(для джунов).
Вы пытаетесь стать профессионалом, не работая, так не бывает.

раскрыть ветку 5
+1

попробую сделать так. когда-нибудь отпишусь о результатах

раскрыть ветку 4
0
Пробовал? Есть какие нибудь результаты?)
раскрыть ветку 3
+2

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

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


Удачи в этом не лёгком пути

+1

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

@OWIII, попробуй Docker

раскрыть ветку 6
0

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

раскрыть ветку 5
0

Книга превосходный код похожа чем то на тренинги Тони Робинсона

раскрыть ветку 4
+1

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


Год назад написал для себя не большой сборщик для вебпака

https://github.com/Dmitriyff/webpack-config-generator/branches

плюс недавно нашел похожий проект

https://createapp.dev/

может упростит вам борьбу с ним

раскрыть ветку 1
0

У вебпака дока хорошая только на начале, потом блин начинается, как использовать dllplugin, полстраницы параметров и все. Как бандланалайзер использовать полстраницы параметров и маленький пример

+1
Если бы кто нибудь выкладывал подобное по 3D моделировннию...
+1

"Нашел курс, где нашел сами понимаете"

Не понимаем. Расскажите, плиз.

раскрыть ветку 7
+2
Йохохо и бутылка рома!
раскрыть ветку 4
0

Торенты? А название курса?

раскрыть ветку 3
0

Если уже сейчас ты не можешь найти курсы на торренте - тебе не в программирование

раскрыть ветку 1
+1

Да я как бы и не собиралась. Мне английский подтянуть.

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

0

я пытался учиться в АЙ ТИ, они скорее тебя в *** пошлют чем будут учить, пришлось все самому читать видеть слушать с интернета,

раскрыть ветку 1
0
Дак и работа заключается в том что нужно решать задачи и находить ответы. Самостоятельность один из важнейших навыков.
0

Как успехи?

раскрыть ветку 1
0

Нормуль))У вас как?

0
Отлично! Теперь хоть понятно стало на чем конкретно сосредоточиться в обучении. Насчёт удаленки - хз. У тебя очень уникальная удаленка, я вообще про другие слышал, с созвонами постоянными, общением. Так что ещё рано я думаю делать выводы.
раскрыть ветку 1
0
ТС писал вроде, что над проектом работает он и его заказчик и все.
0
С режимом беда не потому что расслабились, а потому что думать много приходится, вот мозг и устает
0
Можно с вами связаться
0
Опачки. Как раз мой стэк технологий: ларка + вью. Год опыта. Работаю и работал в офисе, думаю дома я бы так не продвинулся
раскрыть ветку 6
0

А можно такой вопрос? Везде оформление по тк требуется?

раскрыть ветку 5
0
Нет, у меня было оформление по желанию
раскрыть ветку 4
0

Нахожусь на 0 стадии, только начинаю потихоньку изучать разные направления, чтобы выбрать специализацию. Хочу примерно перспективы оценить, и собственно вопрос, сколько ты сейчас зарабатываешь? )

Иллюстрация к комментарию
раскрыть ветку 2
0

по поводу зарплат в ит, на хабр есть статистика подробная,

последняя за 2ое полугодие 2018

https://habr.com/ru/company/moikrug/blog/439152/

0

Ну если по рынку посмотришь основными языками сейчас это питон, java, с++, js, c#, у нас в стране ещё как нишевой язык 1с. А там дальше как пойдёт джун в среднем от 40 50 до 70, мидл 70 - 100, синьор 100-150, а дальше уже в менеджеров. Ну плюс все зависит от серая зп или нет. Коллеги могут щас поправить))

0

Вообще это стандартная ситуация. Много где читал про 5 шагов по освоению профессии. У вас я вижу третий шаг из пяти к лиге профессионалов. Сами пять шагов выглядят примерно так: 1. Я ничего не знаю. 2. Я знаю всё. 3. Мне кажется я что-то знаю, но далеко не все. 4. Теперь то я знаю многое, но всегда есть к чему стремиться. 5. Я многое не знаю, впрочем фиг с ним, я понимаю основы и у меня есть опыт. Поэтому как только пойму что мне нужно помимо тех знаний, что у меня есть, то я пойму и сделаю. А сейчас буду держать себя в форме и постараюсь сильно не расслабляться.


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

раскрыть ветку 1
+3

У меня первый шаг)

0
Прочитал и протестил книгу Леа Веру - Секреты СSS. Много хаков по верстке.

yoksel почитай еще.

0

Что за курс по английскому? Давай название

раскрыть ветку 1
+2
Metland
0

по вебпаку - для начала - создавай проект через vue cli - там тебе зададут пару вопросов и само всё настроится. очень удобно. потом сможешь посмотреть в файлах что и как конкретно там настроилось, и разбиратся

0
Спасибо тебе за твои посты на пикабу. Твой пример мотивирует. Мне 35 лет и я решил тоже уйти в эту сферу.
0

удачи вам! я тоже новое учу - каллиграфию, сложно, но интересно :)

0

Я работал веб-мастером в студии. Ну там wordpress плагины настроить. что-то по php простое подкрутить. И вот хочу тоже стать сеньором каким-нибудь. А в какую сторону смотреть, фиг его знает. Надо программную среду настраивать, и фреймворки учить,как-то так)) Что проще поставить, чтобы уже отладчик был и всё готово? Желательно на винду))

раскрыть ветку 1
+1
К одному из старых постов ТСа был коммент с отличной ссылкой на роадмап, продублирую тут:
https://github.com/kamranahmedse/developer-roadmap
можно почитать, вникнуть, понять, какой путь выглядит интереснее, и начать изучать)
-3

зачем vue.js ? react\angular вроде как гооораздо больше распространены, с работами разного калибра проблем вообще нет

раскрыть ветку 20
+1

Ангуляр ещё жив?) Вроде топ это реакт и вью

раскрыть ветку 7
0

жив, к сожалению

раскрыть ветку 6
+1
Ангуляр на рынке уже не торт. Судьба развития vue еще висит, так как еще не понятно что будет с выходом 3-версии. А за Реактом стоит сам фейсбук. Для средних/крупных проектов, реакт самое то, хотя в большинстве случаев надо продумывать хорошую архитектуру.
раскрыть ветку 4
0
А за ангуляром сам гугл. И кроме js есть angular 4...
Но на самом деле эти все фреймворки - бред. Все проекты мирового уровня используют свои собственные подходы, а это все годится лишь чтобы заказчиков хомпейджей умными словами удивлять.
раскрыть ветку 3
0
Не моё решение, я исполнитель
раскрыть ветку 6
0

Почитай седжвика

0

как курс п английском зоветься?

раскрыть ветку 4
-1

Ребят, кто зарабатывает на JS(работая на какую-нибудь кампанию), можно с вами пообщаться в телеге/вк?

-1

Уважаемый разработчик, может вы сможете мне помочь пожалуйста? сделан инет сайт = Верстка + интеграция с wordpress, все отлично. заходишь на сайт, все открывает, все красиво, заходишь в любой раздел с товаром, или даже просто в новости, то при переходе берет и перекидывает на другую вкладку, то на вулкан, то еще на какой сайт левый. нажимаешь стрелочку назад - открывает нужную страничку нужного сайта.? даже техподдержка хостинга говорит, что вирусов нет, но блин неужели у всех телефОНы с вирусами, что у многих так открывает казино((

-1
С кем бы мне так освоить пхп с начального уровня? Одному изучать скучно, как и разбирать задачи.
раскрыть ветку 8
0

Давай со мной. Где спишемся?

0

Почему именно пхп?

раскрыть ветку 6
0
Потому что простой, слаботипизированный, востребованный и низкий порог вхождения в профессию. Смотрел ещё Ruby, но он мне слабознаком. С пыхом раньше знакомился.
раскрыть ветку 5
Похожие посты
144

ПЕРВОЕ ЗНАКОМСТВО С PYTHON

Общие понятия

Python (в русском языке распространено название пито́н или па́йтон) — кроссплатформенный высокоуровневый язык программирования общего назначения, ориентированный на повышение производительности разработчика и читаемости кода.


Эту фразу видели все, кто хоть раз в жизни открывал статью про Python на Википедии. Вроде бы всё просто и ясно, но как-то не очень. Уже здесь встречаются непонятные термины: кроссплатформенный, высокоуровневый… Дать ёмкое и понятное определение чему бы то ни было – это великое искусство. Поэтому, я думаю, стоит пояснить всё вышесказанное простыми словами. А простыми словами это выглядит примерно так: Пайтон – это язык программирования, который можно использовать на любой известной стандартной операционной системе (Windows, MacOs, Linux) и при помощи которого можно написать практически любую программу (от «Привет, мир!» до новой операционной системы или нового языка программирования). Звучит заманчиво, не так ли?


Пайтон был придуман в 1991 году голландцем Гвидо ван Россумом, также известным как «великодушный пожизненный диктатор». Именно он по сей день принимает окончательные решения о том, как именно будет развиваться язык. Кстати, последняя версия питона (3.9.0) вышла буквально на днях – 05.10.2020. Её главная особенность для новичков, на мой взгляд, в том, что для её установки требуется минимум Windows 10 (на семёрку она не инсталлируется). Всё, чему будут посвящены мои статьи, гарантированно будет актуальным для версий 3.6.0-3.9.0. Версии питона 2.Х здесь рассматриваться не будут, т.к. для разработки новых приложений они уже не используется, а те, кто всё ещё стоически поддерживает приложения, написанные на них, вряд ли будут всё это читать.



Объектно-ссылочная модель

В своих интервью Гвидо подчёркивал, что никогда не видел Python в качестве языка сугубо функционального программирования. С самого начала питон позиционировался как язык объектно-ориентированного программирования (ООП), однако, он на нём можно писать в абсолютно любой парадигме - структурное, обобщенное, объектно-ориентированное, функциональное и аспектно-ориентированное программирование. Не буду заострять внимание на том, что означает каждый из них. Если интересно - это легко гуглится. Что же касается ООП, то пайтон спроектирован таким образом, что абсолютно всё, что в нём есть, т.е. все типы данных, функции, методы, классы, переменные – всё это является объектами, то есть некоторыми сущностями, обладающими определённым состоянием и поведением, имеющими определённые свойства (атрибуты) и операции или действия над ними (методы). Что это означает на практике, мы увидим уже достаточно скоро, а пока что просто примите это и уверуйте, что это именно так.


Переменных (в привычном понимании – «контейнеров») в питоне не существует. Когда в коде встречается нечто вроде «а = 5», серьёзные бородатые программисты в свитерах вам скажут, что «а» - это переменная, в которую записано значение «целое число пять». В случае с питоном это утверждение правда и неправда одновременно. В питоне «целое число пять» – это самостоятельный неизменяемый объект, который лежит где-то в оперативной памяти вашего компьютера. Например, выполним в консоли интерпретатора следующую команду

>>> id(5)
1609562080

Этой командой мы узнаём адрес той ячейки памяти, где у нас лежит число 5 – это ячейка 1609562080 (у вас может быть другое значение – это неважно).

Следом выполним ещё пару команд:

>>> a = 5
>>> id(a)
1609562080

Оказывается, у переменной «а» тот же адрес, что и у самой пятёрки. Но ведь если в питоне всё является объектом, то переменная – это контейнер, а значит тоже объект, то у неё должен быть свой адрес? Ответ – нет. В питоне нет переменных-контейнеров. Вместо этого в питоне есть ссылки на объекты. В данном случае «а» - это ссылка на число 5. Как это ещё проверить? Очень просто. Выполним ещё одну команду

>>> b = 5
>>> id(b)
1609562080

То же самое?! Да, именно так. Переменная «b» ссылается всё на ту же самую пятёрку. Последняя проверка этой теории:

>>> a is b
True

Переменная «а» - это то же самое, что и переменная «b», и любая другая «переменная», которая будет ссылаться на пятёрку, какое бы имя вы ей не придумали.


Возникает вопрос: а что же тогда такое знак «=» в данном случае? В питоне знак «=» не знак равенства, а оператор присваивания. Равенство в питоне выражается через оператор «==», который используется исключительно в булевой логике, т.е. для сравнения значений и/или содержимого разных объектов.


Итак, вывод: в питоне переменных нет, знак «=» не приравнивает значение к переменной и не записывает значение в переменную, а присваивает какому-либо объекту именную ссылку для удобства обращения.



Динамическая типизация

Динамическая или как принято в питонической среде - «утиная типизация». Это очень простая концепция: «Если что-то выглядит как утка, плавает как утка и крякает как утка, то это наверняка и есть утка».


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


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

>>> a = 5
>>> type(a)
<class 'int'>
>>> a = str(a)
>>> type(a)
<class 'str'>
>>> a
'5'

Вот и всё, теперь переменная «а» ссылается уже не на целочисленный объект 5, а на строковый объект 5. Для наглядности я сразу запросил тип каждого из объектов, и оснований не верить результатам лично у меня нет: вначале пятёрка – это число, в конце – строка. Об этом говорит не только type(a), но и само значение, которое раньше было голой пятёркой, а теперь обрамлено кавычками.


Подобным образом тип любого объекта можно менять очень быстро в зависимости от нужд разработчика, и в этом прелесть. Почему это одновременно и боль? Потому что динамическая типизация к огромному сожалению отбирает большое количество ресурсов, что сказывается на производительности и быстродействии. Да, это какие-то там микросекунды, но они очень важны. Кроме того, неопытные разработчики очень любят использовать эту прелесть без особой нужды, что, во-первых, отъедает ресурсы, а во-вторых, даёт подчас внезапные неожиданные результаты. Например, вы бы хотели ожидать на выходе работы программы целое число, а получаете строку. Казалось бы, чего проще – ну переделай её обратно в число и живи счастливо? Но согласитесь, что это как минимум неудобно, когда вам нужно неожиданный результат потом как-то обрабатывать и приводить к нужному типу. Это дополнительный код, а значит дополнительное время на его написание, на его работу и на его поддержку. А время – деньги.



Стиль кодирования. PEP8

У каждого языка программирования, как и любого другого языка, есть свои законы, которым он подчинён. Если русском языке мы пишем названия месяцев со строчной буквы (9 мая, 8 марта), то в английском, например, месяцы всегда пишутся с прописной (January, 4th of July). Питон также имеет свою семантику, грамматику и свой синтаксис. Основным сводом законов, определяющих требования к красивому и качественному стилю кодирования определены в документе, который называется Python Enhancement Protocol 8 или PEP8. Основные правила на самом деле достаточно просты, но почему-то на каждом новом курсе я встречаю людей, упорно их игнорирующих.


Давайте начнём с того, что Python – язык международный. Это вам не 1С, на котором пишут в буквальном смысле по-русски. В питоне всё по-английски. Всё и всегда. Мне попадались 2 уникума, которые упорно именовали переменные по-русски. Объясняли они это тем, что «так понятнее». Нет, если вы не знаете английского, то вам, возможно, будет понятнее. Но нужно учитывать, что IT – это англоязычная среда, все программы, и 90% документации написаны именно на английском, и, в конце концов, ваш код могут читать (а большинство времени будет потрачено именно на его чтение, причём не только вами) люди, не знающие русского. Ну или давайте наоборот: вам прислали на проверку кусок кода, где половина на хинди или суахили. Как вам такое? Возьмите себя в руки и если вы не знаете или плохо знаете английский – начните его учить с нуля. Не брезгуйте онлайн-переводчиками и словарями для выбора имён переменных и функций – это не стыдно.


Вообще, раз уж зашла об этом речь, то надо сказать, что есть отдельная книга, которая посвящена рефакторингу кода. Название переменной должно отражать то, что в ней лежит (или в нашем случае – на что она ссылается). Название функции должно чётко отражать то, что она делает. Многие и то и дело пишут примерно так:

>>> a = 5
>>> b = "mama"
>>> for i in b:
... print(i * a)
...
mmmmm
aaaaa
mmmmm
aaaaa

Казалось бы, всё работает – что ещё нужно? Да, работает. Даже если бы переменные были названы по-русски или по-китайски, то же бы работало, так как питону глубоко всё равно, какой алфавит вы используете для обозначения ссылок - он всё это перерабатывает в байтовые представления символов юникода. Кошмар же заключается в том, что не соблюдено главное правило питониста: код должен быть читаемым. Читаемым человеком, его глазами. Возможно, сейчас это будет сложно, но попробуйте представить, что между объявлением переменных и циклом for не ноль строк, как сейчас, а 100-150-200. Да, это утрированный пример, но всё-таки. Никто через 100, да даже через 50 строк не вспомнит, что такое переменные «a» и «b». Ну какие-то там переменные, но что в них лежит, на что они ссылаются? Может это число и строка? А может это строка и число? А может это и не строка и не число? Надо лезть выше, искать их, разбираться. Опять всё сводится к бесполезной трате времени.


Не проще ли было сразу назвать эти переменные по-человечески (в прямом смысле)? Давайте попробуем:

>>> number = 5
>>> string = "mama"
>>> for i in string:
... print(i * number)
...
mmmmm
aaaaa
mmmmm
aaaaa

Выхлоп не изменился, но мозгу становится понятнее, глазу приятнее. Осталось разобраться с «i».

В строке «for i in string» «i» является ничем иным как временной переменной. Её тоже нужно уметь красиво и понятно назвать. Как показывает моя собственная практика, иногда хорошее, грамотное название переменной снимает у студентов возникшие вопросы по дальнейшим действиям. Они внезапно начинают понимать, что делали не так и что нужно на самом деле делать и куда двигаться. Так давайте уже её переделаем и пойдём дальше:

>>> number = 5
>>> string = "mama"
>>> for letter in string:
... print(letter * number)
...
mmmmm
aaaaa
mmmmm
aaaaa

Именно это и описано в PEP8 – как писать качественный код, отвечающий требованиям и стилю Python, или как принято говорить – pythonic style или pythonic way. Многие из нас, кто ещё в школе пытался учиться программированию, помнят такой язык, как Basic или QBasic. Потом он перерос в VBA и до сих пор (к сожалению…) используется для написания макросов в офисных программах Microsoft. И в связи с этим у многих из нас при изучении питона всплывает Basic style – стиль кодирования на Basic. Pythonic style ушёл намного дальше. Читаемость кода за счёт простоты синтаксиса повысилась в разы. Вот для наглядности пример.

Задача: получите из входного потока число и напечатайте сумму его цифр.

Как бы эту задачу решило большинство в «Basic style»:

>>> number = input()
>>> summa = 0
>>> for dig in number:
… if dig in '0123456789':
…  summa = summa + int(dig)
>>> print(summa)

Как это решается в «Pythonic style»:

>>> print(sum(int(x) for x in input() if x.isdigit()))

Возможно, вам сейчас ничего не понятно из того, что тут написано, но вам стоит оценить хотя бы то, сколько сил и времени сэкономлено за счёт сокращения количества строк. «Достаточно одной таблетки» (с). В данном случае – одной строки, а результат одинаковый.


Давайте тезисно определим основные правила синтаксиса:

- используя питон, мы пишем на английском языке;

- все названия переменных, функций, классов должны как можно полнее отражать их суть и содержание;

- названия переменных и функций принято писать в нижнем регистре, разделяя слова подчёркиванием (snake_case):

# ПРАВИЛЬНО
my_number = 42
def my_function():
#НЕ правильно
MyNumber = 42
Mynumber = 42
MYNUMBER = 42
mynumber = 42
МоЙнОмЕр = 42
def MyFunction():
def Myfunction():
def MYFUNCTION():
def myfunction():

- названия классов принято писать в CamelCase – слова пишутся с заглавной буквы без разделителей между словами:

# ПРАВИЛЬНО
class MySuperPuperClass:

#НЕ правильно
все остальные варианты

- для названия переменных, функций и классов нельзя использовать зарезервированные слова (слова, которые зашиты в питоне в качестве операторов, имен встроенных функций, классов и их атрибутов и методов);

- конец строки является концом инструкции (никакие специальные знаки не требуются);

- вложенные инструкции объединяются в блоки по величине отступов. 1 отступ = 4 пробела;

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

if a == 1:
print('mama' * 3)  # 4 пробела после двоеточия

- в случае, если длина инструкции превышает 80 знаков, допустимо записывать одну инструкцию в нескольких строках. Достаточно ее заключить в пару круглых, квадратных или фигурных скобок:

if (a == 1 and b == 2 and
c == 3 and d == 4):  # продолжение инструкции выравнивается по открывающей скобке
print('mama' * 3)  # 4 пробела после двоеточия

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

>>> if x > y: print(x)

- технически возможно записать несколько инструкций в одной строке, разделяя их точкой с запятой (но такой способ не приветствуется, т.к. не соответствует стилю кодирования PEP8):

>>> a = 1; b = 2; print(a, b)

Это основные вещи, которые нужно выучить. Благо, что мы живём в 21 веке и рабочие среды уже давно умеют анализировать наш код на соответствие стилю, а также полно разнообразных сторонних линтеров. Поэтому, если вы переживаете, что вы не осилите этот момент – ваша IDE вам подскажет, где что поправить, и в большинстве случаев – сама же и поправит. Если она этого самостоятельно делать не умеет, то можно воспользоваться сторонними линтерами.

Что будет, если на всё это забить и писать как бог на душу положит? Да ничего. Просто вас проклянут до десятого колена те, кто будет это читать, а в остальном ничего.



Дзен питона

Также у питона есть свой собственный сборник мантр, который также призван формировать хороший стиль у разработчиков. Выполним в консоли команду:

>>> import this

The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

Перевод на русский конечно же существует:


Дзен Пайтон (составлен Тимом Питерсом)
Красивое лучше, чем уродливое.
Явное лучше, чем неявное.
Простое лучше, чем сложное.
Сложное лучше, чем запутанное.
Плоское лучше, чем вложенное.
Разреженное лучше, чем плотное.
Читаемость имеет значение.
Особые случаи не настолько особые, чтобы нарушать правила.
При этом практичность важнее безупречности.
Ошибки никогда не должны замалчиваться.
Если не замалчиваются явно.
Встретив двусмысленность, отбрось искушение угадать.
Должен существовать один — и, желательно, только один — очевидный способ сделать это.
Хотя он поначалу может быть и не очевиден, если вы не голландец (это такая шутливая отсылка к Гвидо).
Сейчас лучше, чем никогда.
Хотя никогда зачастую лучше, чем прямо сейчас.
Если реализацию сложно объяснить — идея плоха.
Если реализацию легко объяснить — идея, возможно, хороша.
Пространства имён — отличная вещь! Давайте будем делать их больше!

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



«Hello, world!»

Пришло время написать первую программу. Хотя на самом деле это не так. Свою первую программу все те, кто скачал и поставил себе пайтон, уже написали. С точки зрения программирования рабочей программой называется та программа, которая запускается и не выдаёт ошибок. Так что с этой точки зрения пустой код – это вполне рабочая программа. Вы можете в этом сами убедиться, создав пустой файлик с расширением .py и запустив его через вашу IDE. Физически ваша «программа» ничего не выдаст, но интерпретатор вам скажет «Process finished with exit code 0», что означает, что код был запущен и завершен без ошибок, а значит он вполне рабочий.


Под первой программой стандартно понимается программа, выводящая на экран сообщение «Hello, world!» - то есть нам нужно просто вывести текст на экран. Для вывода на экран существует встроенная функция «print». Для вызова функции нам необходимо добавить к её названию круглые скобки: print().


Можно написать в консоли print(), нажать Enter – программа отработает без ошибок, но ничего напечатано не будет. И это нормально, ведь мы не сказали функции, что именно ей нужно напечатать. Пока что мы просто заставили её сработать вхолостую, что она и сделала.

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


Текст в питоне – это тип данных «строка» (подробнее о них мы поговорим в следующий раз, и поверьте, там есть о чём). Строки должны быть заключены в кавычки.


Hello, world! – это не строка.

"Hello, world!" – а вот это уже строка.


Значит именно так мы и должны передать её в функцию print.


Итак,

>>> print("Hello, world!")
Hello, world!

Отлично, мы сделали это! Но, можно ещё интереснее. Например, можно записать строку в переменную, передать в функцию эту переменную и распечатается та же строка:

>>> hello = "Hello, world!"
>>> print(hello)
Hello, world!

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

>>> hello = "Hello, "
>>> name = input() # с клавиатуры вводим любое слово, например, Петя
>>> print(hello, name, "!")
Hello,  Петя !
>>> print("Hello, " + name + "!")
Hello, Петя!

На сегодня это всё, спасибо за внимание!


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

Да, и тег моё - потому что всё написано моими руками, а не тупо понакопировано с других сайтов.


P.S. Большое спасибо всем моим подписчикам за поддержку и активность! Без вас я, возможно, не решился бы продолжать.


Ссылки на предыдущие посты:

1. Предлагаю помощь в освоении Питона

Показать полностью
1541

Предлагаю помощь в освоении Питона

Всем привет!

На фоне пандемии у населения резко возрос интерес к изучению каких-либо языков программирования с целью «уйти в ай-ти». Стать программистом – желание похвальное, но стать хорошим и востребованным программистом на деле оказывается не так просто, как вам обещает реклама. За 6-12 месяцев от нуля до сениор-разработчика вырасти невозможно. За это время в лучшем случае можно более-менее уверенно освоить один язык программирования, менее уверенно пару фреймворков к нему и пописывать какие-то мелкие программки для решения собственных нужд. Нет, есть конечно же уникумы, но их единицы на тысячи.


Я являюсь помощником менторов на одном из известных порталов онлайн-обучения. На каком именно – неважно, ибо, во-первых, я не хочу, чтобы меня обвиняли в рекламе, во-вторых, они все по большому счёту одинаковые, разница лишь в шильдике и ценнике за этот шильдик. Так вот, глядя на то, как новичков, которые ещё вчера были бухгалтерами, строителями, водителями (выберите нужное или вставьте своё), без оглядки гонят по готовой программе, мне становится немного жутко. Жутко от того, что наивных людей как минимум ввели в заблуждение относительно простоты получения квалификации, т.е. набора знаний, дающих право на работу в сфере IT. Им обещают, что через полгода они смогут творить чудеса своими руками не выходя из дома. Да, местами, действительно, это возможно, но лишь местами. При этом, программы обучения могут быть сырыми и необкатанными, лекции - сбивчивыми, лекторы – пустословными. Я не хочу сказать, что так везде, но местами так случается. Форма подачи материала играет очень важную роль в любом процессе обучения, особенно, если это обучение с нуля.


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

- материала много, и всё за один вебинар рассказать не удаётся (ограниченная подача информации),

- материал подаётся бессистемно и сбивчиво (неопытность лектора как преподавателя),

- в плане обучения нет нужных реперных точек, которые могли бы якорить теорию в переложении на практику (непродуманность плана обучения),

- а также многое другое.


Сразу хочется предупредить восклицание «да это просто студенты тупые». Отнюдь. Когда человек сам платит деньги за обучение – он обычно знает, чего хочет и зачем ему это нужно. То есть он готов и хочет учиться, но не может воспринять материал, вследствие чего в его голове возникает каша из бессистемных знаний. И всё это уже на базовом уровне, то есть именно там, где всё нужно не просто забить к себе в голову, а разложить по полкам и знать где и что лежит, чтобы в нужный момент это взять, даже если вас подняли посреди ночи. Дело не в зубрёжке. Дело в понимании. Если нет понимания процесса, то нет и возможности этот процесс реализовать.


Глядя на мучения новичков, я собрался с мыслями и решил написать серию статей, посвящённых основам программирования на одном из самых ныне популярных языке программирования Python. Python стал резко занимать лидирующие позиции в рейтингах популярности благодаря именно вам, дорогие мои новички. Именно вы, желающие «легко запрыгнуть в IT», выбираете Python в качестве своего первого языка программирования, чем задираете его рейтинги. И это прекрасно, потому что Python прекрасен сам по себе. Он лаконичен, понятен, относительно прост, гибок - тем самым удобен для изучения и для обучения. Мои статьи будут касаться самых базовых вещей. Я постараюсь как можно подробнее и понятнее разобрать все основные моменты, с которых начинается “pythonic way”, а также типичные ошибки, с которыми сталкиваются новички.


Не ждите, что я вам скажу что-то принципиально новое. Всё, что я буду излагать, можно было бы легко найти в другом месте. Есть куча сайтов с бесплатным контентом и даже бесплатными курсами. Всё это легко гуглится. Я сам их использовал в своё время, да и сейчас иногда проще что-то быстро нагуглить, чем читать специальную литературу или официальную документацию. В то же время, могу сказать, что лично мне некоторых вещей очень не хватало на старте изучения Python. Прежде всего, не хватало объяснения под другим углом, с другими примерами, иногда очень хотелось повышенной многословности вместо сухих фраз или просто брошенных кусков кода («читай – там всё написано»).


Я рассчитываю, что эти статьи вам помогут начать писать свои собственные программы «для дома, для семьи». Мы не будем лезть в такие дебри, как например, асинхронность. Мы также не будем рассматривать такие библиотеки как NumPy, matplotlib. Только необходимый минимум, только база, никакого хардкора. Но мы будем это делать обстоятельно и поступательно, связывая одно с другим и обрастая нужной информацией углубляться дальше. В каждой теме будут присутствовать примеры в виде рабочих и понятных кусков кода (никаких бессмысленных foo-bar).


В первом приближении план таков:

1. Первое знакомство с Python:
1.1. Общие понятия.
1.2. Объектно-ссылочная модель.
1.3. Стиль кодирования. PEP8
1.4. Дзен питона
1.5. Hello world
2. Встроенные типы данных (их назначение, методы и стандартное поведение):
2.1. Изменяемые и неизменяемые типы данных. Коллекции, последовательности.
2.2. Числа
2.2.1. Целые
2.2.2. Десятичные
2.3. Строки
2.3.1. Обычные
2.3.2. Сырые
2.3.3. Форматирование строк
2.4. Списки
2.5. Кортежи
2.6. Множества
2.7. Словари
2.8. CSV, JSON, XML, YAML (обзорно без углубления)
3. Булева логика
4. Ветвления:
4.1. Общая теория ветвлений
4.2. Проверки объектов
5. Циклы WHILE и FOR
6. Функции:
6.1. Обычные функции и их аргументы
6.2. Анонимные lambda функции
6.3. Рекурсия и стек вызовов
6.4. Встроенные функции
6.5. RETURN – что это и зачем он нужен, если есть PRINT
7. Генераторы (первое приближение)
7.1. Инструкция YIELD
7.2. Генераторные выражения
7.3. Генераторы списков, множеств, словарей (они же – списковые, множественные, словарные включения, они же - list, set, dict comprehensions)
8. Работа с файлами
9. Многофайловые программы:
9.1. Модули
9.2. Пакеты
9.3. Инструкция if __name__ = = __main__
10. Объектно-ориентированное программирование (ООП)
10.1. … (детальный план в разработке)
11. Тестирование кода
11.1. … (детальный план в разработке, одно точно – это будет про PyTest)
12. … (можете подкинуть идей, если хотите)


План неокончательный ни по составу, ни по компоновке, но общий скелет и путь именно такой.

Надеюсь, что всё это поможет всем, кто ищет помощи, но не может её по каким-то причинам найти.


Ещё раз повторюсь: я не являюсь истиной в последней инстанции и не претендую на то, чтобы понравиться всем. Кому-то зайдёт, кому-то нет – это нормально, т.к. обучение – это всегда очень индивидуально, потому что субъективно.

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

Показать полностью
166

Ответ на пост «Возможно ли стать программистом после 30? Продолжение» 

Моя история будет не о IT, а о сфере моушн-дизайна да и вообще о CG.


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


Предисловие.

На заре начало 2018 года, мне 28 лет, коротаю серые будни на работе в компании одного из сотовых операторов, в которой я работал уже 3 года. Я не могу сказать, что мне не нравилась компания, а наоборот, мне нравилось в ней все, от корпоративной культуры до ее политики в плане работы, отношения к клиентам да и к работягам которые там трудились. Корпоративы, командировки в другие города и тренинги мотивировали там работать, но я хотел продолжать карьеру в другом отделе (я работал в продажах, и мне это жутко надоело, да и мотивации продавать было все меньше и меньше). Я ни раз говорил руководству что хочу перевестись, но то не было свободных вакансий в штате, то "сейчас не время, ген. директор сменился и т.п.". Ожидание заветного момента когда у меня будет шанс что то изменить меня совсем измотало до состояния, когда просто не хочу просыпаться и идти на работу. Тогда я и начал задумывать о том, что пора самому что то поменять. Начались долгие поиски себя и чего я хочу вообще. Сомнения сжирали мозг по частям "а смогу ли я?", "а хочу ли я?", "а надо ли мне все это?" и все возможные вопросы такого характера не вылезали у меня из головы.


Поиск пути.

Перебирал я разные варианты, первая мысль в голове была пойти в IT. По изучав эту сферу не много, а именно front-end понял что мне не очень то и нравится сидеть и писать код, да и как то сложно все (дада, сдался сразу же) решил что это не мое. Сидя вечером дома листая ютубчик я наткнулся на интервью одного дизайнера, где он рассказывал о начале своей карьеры и о том как вообще в нее пошел. Меня эта история до глубины души задела, ведь наши истории были так похожи, решили бросить работу в 28 лет и уйти в неизведанный мир моушн-дизайна. И я поймал себя на мысли, что я тоже смогу, да и мне нравилось делать видео и графику , будучи студентом и злостным задротом игры Lineage 2 в которой я любил делать мувики, поэтому эта сфера мне была близка.

Я твердо решил начать изучать видео-дизайн. И начал свой путь с After Effects (в дальнейшем - АЕ).


Пещера, в которую ты боишься войти, хранит сокровища, которые ты ищешь.

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

Было тяжело совмещать работу и изучать что то новое. Приходя домой в 21-22 часа весь уставший и порой без настроения просто не хватало сил сидеть и учиться чему то новому.

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

Я не хотел быть фрилансером, не хотел идти работать в офис, я хотел работать просто сам на себя. И моим выбором стали видео стоки, где я мог продавать свои работы (шаблоны).

Спустя наверно месяц, у меня что то начало получаться.


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

Конечно я не говорю о больших суммах, а для меня тогда и те 200$ которые мне принес проект были уже победой. Спустя пару недель в моем портфолио прибавилось еще пару проектов.

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


Кризис.

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


После отдыха я возобновил работу, начал учить новые программы (Cinema 4D) , ставил для себя более сложные задачи и цели. Но прежде всего я изменил свой распорядок дня, я начал более серьезно относится к работе, сделал себе расписание. Я решил отказаться от вольного распорядка, которого я придерживался ранее. Решил заняться самоконтролем.

Это принесло свои плоды и морально стало как то проще работать.


Сейчас

И вот уже прошло два с половиной года, я стал заниматься тем, что хочу, и можно сказать мое хобби переросло в работу. Я работаю на удаленке в компании, так же занимаюсь стоками, но совсем не много. Набрал 30 киллограм веса (да, когда работа и дом находятся в одной комнате - тяжело контролировать все), завтра уже иду в спорт.зал и может выложу результаты - до удаленки - после удаленки - после зала :D

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

Так же не много преподаю (для друзей, которые тоже решили поменять сферу деятельности)


В данный момент изучаю Maya и хочу пойти по пути гейм-дева и анимации персонажей.


Извиняюсь за сумбурный рассказ. Буду рад написать более подробное продолжение если мой рассказ Вам понравится.

С радостью отвечу на вопросы.

Показать полностью
922

Возможно ли стать программистом после 30? Продолжение

Первая часть, написанная годом ранее, тут: Возможно ли стать программистом после 30 лет? Поделюсь своей историей

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

Я не могу однозначно определить, насколько всё плохо (или хорошо), и всё время метаюсь между двух крайностей. Если говорить грубо и радикально, то полноценным программистом я себя не могу назвать даже при большом желании - я верстальщик-скриптоложец с синдромом самозванца и симптомами вечного джуна. Да, порой перепадают интересные задачи моего уровня, но 80-90% моей работы - это верстка страничек, простейшие анимации, вордпресс. Мне несколько раз пытались доверить что-то посложнее, но я ощущал себя собакой, в которую тыкают учебником по квантовой механике, и возвращался к html/css. Уровень заработной платы сейчас такой же, как на последней манагерской работе (с учетом инфляции даже ниже). Есть проблемы со здоровьем: тревожное расстройство, невроз, больная поясница, постоянная апатия и вялость. Случаются приступы перегорания. Каждый день трясусь по выдуманным или почти выдуманным поводам из серии "А вдруг меня завтра уволят" и т.п. Стал гораздо меньше гулять и заниматься спортом, почти весь день провожу перед монитором или уткнувшись лицом в подушку.

С другой стороны, если сравнивать мой профессиональный уровень с тем, что был в 2019, то разница огромная. Я стал гораздо меньше говнокодить и закрыл много дыр в базовых познаниях. На работе меня ценят (раз я до сих пор в строю), заказчики отзываются положительно. Свои задачи я делаю быстро и достаточно качественно, пусть и не ракеты в космос отправляю. Самое главное: сам факт наличия работы в наше непростое время - это уже огромный плюс и грех тут слюни распускать и жаловаться, как нытик.

Вернемся в осень 2019 года, к моей первой работе на номинальной должности "программиста PHP". Поначалу было действительно интересно, каждый день было что-то новое, мозги всегда были в тонусе, но в определенный момент всё превратилось в рутину и однообразные задачи: клепаешь всякие там формы регистрации, копируешь-вставляешь древние куски кода и т.п. И всё это происходило в малопопулярной CMS, опыт работы в которой никому и даром не нужен. Со скуки даже начал по собственной воле писать разнообразные пошаговые инструкции для будущих падаванов - кстати, это мне сильно сберегло время и нервы, когда я передавал дела перед увольнением. Новую работу я в то время активно не искал, но каких-то серьезных перспектив в конторе не видел и резюме на всякий случай обновлял. А что, а вдруг (с). Предложений было достаточно много, но 99% из них либо были из разряда "требуется синьор-помидор" (то есть HR явно что-то путали), либо я лажал с подливой на собеседованиях. Хотя лажал уже далеко не так сильно, как в начале своего пути, конечно.

И вот, приходит очередное письмо с предложением работы разработчиком PHP - я открываю список требований по вакансии (миддл+ с опытом 3-5 лет и огромным стеком непонятных аббревиатур), улыбаюсь и вежливо отвечаю, что мой уровень и близко этому не соответствует. Спустя день получаю ответ "мы дадим возможность прокачать свои компетенции, поэтому можете попробовать пройти собеседования, если интересно". Попытка не пытка, давайте, компания показалась интересной и перспективной в плане моего развития и финансового благополучия. Скайп-собеседований было целых три и растянулись они на неделю - мне свойственно принижать свои заслуги и заниматься самобичеванием, но в данном случае скажу, что я очень горжусь тем, что успешно прошел их все и получил предложение о работе. Пусть это и не привело к каким-то там успешным успехам в жизни. По крайней мере пока.

Первое собеседование было полностью на английском (обычном разговорном, не техническом) языке. В компании это так же важно, как и навыки программирования, так как русскоязычных клиентов минимум, в основном все забугорные. С английским у меня, к счастью, всё в порядке, спасибо 10 годам в школе, самостоятельным поездкам по миру и фильмам с субтитрами. Второе собеседование, ключевое, было уже техническое и на русском - к нему я готовился, как к решающему экзамену, перелопатил 100500 возможных вопросов и ответов. То, что понимаю, повторил. То, что не понимаю, тупо вызубрил. Собеседование было назначено на рабочее время и мне пришлось выйти на улицу, в мороз (на дворе был уже декабрь). В одной руке телефон, в другой - шпаргалка со списком самых популярных вопросов-ответов, мандраж, дрожащий одновременно от страха и холода голос. Разговаривали мы около 40 минут, не меньше - я правильно ответил на 90% вопросов, после чего получил достаточно забавную, но приятную обратку "позиционирует себя как джун, но по факту крепкий миддл". Угу, крепкий миддл, уверенно рассказывающий про ООП, но без единого проекта с использованием ООП :)
Третье собеседование было уже с одним из директоров, стандартная проверка на адекватность, ничего примечательного. После этого попросили дать телефоны бывших работодателей (всё серьезно), чтобы собрать с них рекомендации - благо, я ни с кем отношения не порчу и проблем с этим тоже не возникло, все откликнулись. Хотя позвонили всего одному из них, этого оказалось достаточно. Оффер в кармане, ура.

На текущей работе к моему увольнению отнеслись с легкой грустинкой, но без подлянок и с пониманием. Я отработал положенные 2 недели - мне выплатили всё до последней копейки в день увольнения. Очевидные плюсы белых контор :) Забегая вперед, ушел я вовремя. Напомню, что компания занималась организацией массовых мероприятий, а китайский сверхразум уже месяц как скушал ту самую летучую мышь... Короче, начиная с февраля 2020 ребятам порезали все премии, т.к. мероприятия отменялись одно за другим. Не сократили, конечно, но жизнь на голом окладе тоже не сахар.

В свой первый рабочий день на новом месте (самый конец 2019 года), я спросил у HR - неужели на рынке не было более достойных кандидатов? Почему я? С удивлением узнал, что спецов много, но вот именно программистов PHP с хорошим знанием английского найти очень сложно. Так что решили понизить планку и взять человека "на вырост", причем под конкретный проект одного из крупнейший клиентов, который вот-вот запустится. Что касается офиса и обстановки - мне было даже неловко что ли, везде новая техника, огромные столы, куча пространства... Круто! Сейчас как начну хацкерить!.. Прошло четыре часа, я настроил окружение, познакомился с ребятами, сижу, улыбаюсь, поглаживаю своё ЧСВ и тут мне прилетает первая задача с пометкой "изян". Ну, типа, на часик тебе для раскачки, что-то там подкрутить на Laravel (фреймворк на PHP). Пока я вдуплял, что от меня хотят, мне несколько раз написала манагерша этого проекта с конкретными наездами "Когда будет сделано?" и "В чем проблема, почему так долго?". Меня, конечно, бомбануло. Закралась мысль, что возникло какое-то недоразумение и на работу взяли вовсе не того человека, которого должны были. С этой мыслью я пошел к директору и честно сказал "Я джун, никогда этого не скрывал и пришел к вам на прокачку. Я не могу по щелчку пальца выполнить эту задачу". Директор успокоил, сказал не переживать - типа, про твой опыт я в курсе, а задачу как сделаешь, так сделаешь. Не кипишуй, мол, раскачивайся.

Со своей первой задачей я провозился четыре дня - трясся над ней как в офисе, так и дома перед сном. И осознал первый минус своего положения - компания действительно слишком крутая для меня. Все ребята там самодостаточны, каждый может заменить собой целую команду. Конечно, можно задать вопрос и попросить совета - тебе ответят и дадут совет, но разжевывать и нянчиться никто не будет. Спасение утопающего - дело рук самого утопающего, короче. А чувствовал я себя на новом месте как-то так:

Возможно ли стать программистом после 30? Продолжение Web-Программирование, IT, Программирование, Длиннопост

Других задач в первую рабочую неделю у меня не было и никто меня не трогал. Потом был Новый год, новогодние праздники и снова в бой со свежими силами. Пару дней относительная тишина (занимался самообразованием) и затем прилетает вопрос "Привет, а ты знаешь Symfony?". Это такой фреймворк PHP, если кто не слышал. Я слышал, но никаких преимуществ мне это знание не давало :) Ответил, что никогда не работал. Следом приходит "Придется поработать". Братан, а ты когда-нибудь управлял космическим кораблем? Нет, не управлял. Ну придется поуправлять.

Меня направили в помощь какому-то синьорному синьору, работающему на удаленке над проектом на этом самом Симфони. Толку от меня было, как... Ну вы поняли. Человек был очень занят и вся его вводная заключалась в 2-3 предложениях типа: "тут скачай, это разверни, то самое подключи". На мои скромные "но я не понимаю", он лишь посетовал на нехватку времени что-то мне объяснять. Сам так сам, ок. Одним глазом смотрю обучающие видео по Симфони, вторым пытаюсь понять, что от меня требуется, а в перерывах плачу в туалете. С проекта меня сняли через несколько дней, так ничего путного от меня и не добившись. И тут, словно луч света в темном царстве, наконец-то объявился тот самый клиент, из-за которого меня изначально и взяли на работу.

Пара ознакомительных скайп-конференций на английском, куча вводных, и вот я уже при деле, в своей тарелке. Задача для большинства прочитающих этот пост разработчиков покажется элементарной: развернуть сайт на вордпрессе, сверстать странички, настроить админку. Ну и разбавить все js-анимашками. Только вот с вордпрессом я был "на вы", страничек было очень много, а мои познания в js ограничивались романтическими отношениями с jquery. Дорогу осилит идущий. Взял себя в руки и начал жестить...

Я понимал, что текущий проект - это мой единственный шанс остаться на работе и надо выложиться по-максимуму. Свободного времени не было вообще, вся моя жизнь на несколько месяцев превратилась в цепочку работа-сон-работа. Что касается немногочисленного программирования, то PHP становилось все меньше и меньше, но вот задачи по JS плодились как из рога изобилия. Явные дыры в знаниях компенсировал упорством и смекалкой. Какие-то задачи делал на таких костылях, что у тимлида (будь он на проекте) кровь из глаз бы полилась так обильно, как в "Сиянии" у Кубрика. Со временем, конечно, пришлось переписывать многие куски по-человечески. Ах да, испытательный срок я в итоге прошел без проблем и мне даже подняли зарплату. Самое главное в бизнесе - это довольный клиент, а скоростью и качеством моей работы он был полностью удовлетворен и давал хорошую обратку.

Далее всё шло своим чередом, разве что в апреле из-за ковида нас перевели на удаленку, но на самой работе это никак не отразилось. Когда у меня не было задач по основному проекту, меня подключали к другому, где я был кем-то вроде стажера-падавана на подхвате - так началось моё знакомство со страшным и ужасным Ангуляром. Было очень тяжело (даже пришлось экспресс-курс ознакомительный проходить), но никто ничего фантастического от меня и не требовал. Та же верстка, те же стили, только не страничек, а компонентов. И знаете, на тот момент всё было замечательно: я много сил потратил, чтобы закрепиться в компании, и просто хотелось какое-то время спокойно поработать, без гонок за новыми знаниями и стремительно размножающимися фреймворками и библиотеками.

К лету задачи по основному проекту внезапно кончились, а моя ангуляровская стажерско-падаванская работа явно не окупала даже десятую часть от моей зарплаты, поэтому меня начали пытаться привлекать к другим сайтам. Данный период я называю "шашлыком из фиаско" - буквально за пару недель я из состояния уверенности в себе вновь вернулся к панике и депресснякам. Что ни проект, то какая-то засада вселенского масштаба: сначала какой-то мертвый PHP-фреймворк, о котором я в первый раз в жизни услышал, потом какая-та Годзилла на Laravel, однажды даже на полном серьезе предлагали проект на Python. Везде не было такого понятия как "команда", то есть за уши тащить никто не будет, всё должен делать сам и разбираться во всё должен самостоятельно. Как правило, удавалось убедить манагеров, что это плохая идея и клиенту может очень сильно не понравится, что на его проект ставят полный нолик без палочки. Закончилась эта эпопея насильным подключением меня к индийскому проекту на jquery... Не хочется прослыть мерзким расистом, но английский заказчика я вообще не понимал. Это было что угодно, но не английский. А проект можно было развернуть только под виндой, какой-то там хитрый софт используется, который с линуксом не дружит :) Ну знаете, это ведь так чудесно, когда на заре погружения в мир IT тебя постоянно тыкали в использование винды, а потом на работе заставляют эту самую винду устанавливать. Бомбануло знатно. Я набрался смелости и позвонил директору, объяснил ситуацию. Сказал, что даже готов поработать пару месяцев за копейки, только поставьте в нормальный проект, чтобы дураком не помереть и чему-то научиться. Спасибо шефу, что успокоил и вошел в моё положение. С индусами работать не пришлось. И на этом полоса неудач и унижений закончилась.

Спустя время возобновилась работа по основному проекту (как же я тогда был счастлив!) + меня начали подключать к другому ангуляровскому приложению. Да, в основном я там тоже верстаю и особо логику не трогал, но это уже не стажерские задачки а-ля "измени текст", а верстка полноценных и достаточно объемных компонентов. Работа на одном из двух проектов была и есть всегда, часто даже приходится оставаться сверхурочно (за отдельную плату, конечно, это еще один несомненный плюс белых компаний). Так что в этом плане всё стабилизировалось - никто меня больше не мучает и не обижает :)

"Чего же тебе еще надо, собака?"

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

Что касается профессионального развития в свободное время, то я, посоветовавшись с более опытными коллегами, решил сброситься до заводских настроек и изучить основы JS с нуля, как положено. Никакие курсы рекламировать не собираюсь, скажу лишь одно: все, кто на серьезных щах обещает "золотые горы спустя месяц" и тем более "выучить JS за три дня на практике", - это инфоцыгане. Это полная хрень и туда стоит соваться разве что по фану, ради развлекаловки, или для поверхностного знакомства с большой темой. Хорошие проработанные и полноценные курсы - это от полугода, не меньше. И, самое главное, это должны быть курсы с поддержкой наставника-ментора, а то будете как слепой котенок в жестоких каменных джунглях. Учеба дается несладко, пару раз даже думал бросить, но это было бы слишком просто.

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

Всем желаю успехов.

Спасибо за внимание.

Показать полностью 1
132

Работа в ИТ

Работа в ИТ Веб-комикс, Юмор, IT, Программирование, Комиксы, Баклажан

Либо прилив вдохновения и строчишь код строка за строкой...

Либо растекаешься по клавиатуре тупенькой амебой, залипая на первом же баге.


https://vk.com/fierytigra

5498

Технический долг

Технический долг Программирование, Профессиональный юмор, IT

1) Унаследованное программное обеспечение, на использовании которого настоял клиент

2) Единственный формат файлов, с которым оно умеет работать

3) Конвертер, потребляющий 80% всех ресурсов

67

Парольная политика

Небольшая история про то, с чем можно столкнутся при усилении безопасности информационной системы (ИС).


На  работе я  работаю программистом,  работаю над информационной системой, которой пользуется несколько регионов по России.

В Москве год назад наняли безопасника, который начал приводить в порядок ИБ по филиалам и время от времени присылали приказы которые надо исполнять.

И вот пару месяцев назад прислали приказ о политике паролей в ИС, то есть напрямую связана со мной. В ней требовалось:

- Обязательно большие, маленькие символы и цифры.

- Срок действия пароля - 3 месяца.

- Пароль не должен повторятся в течение года.

- Минимальная длина паролей для юзеров - 12 символов, а для админов — 16.

- Время закрытия сессии по неактивности — 15 минут.

- Защита от подбора: При восьми ошибок подряд блокируется аккаунт на 10 минут, потом давая еще 1 попытку.


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

За одним я реализовал хеширование пароля, удаляя хранение пароля в открытом виде (из совместимости с другими системами), сделал единую процедуру авторизации в SQL.

И вот, реализовав все требования, выпустил обновление как для своего региона, так и других.

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

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


Наверно после этого обновления все пользователи и администраторы были согласны купить мне билет прямо в Ад и на отдельный котел с усиленным подогревом. Особенно администраторы ведь для них длина пароля от 16 символов. Да и я сам в первое время забывал свой пароль и пару раз менял его, поскольку все мои старые пароли попали в историю как тестовые и повторно использовать их уже нельзя. Кроме того, пароль ведь больше не хранился больше в открытом виде и пользователю нельзя было подсказать какой у него был пароль, если он его никуда не записал, только сброс на новый.


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

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

Сейчас в принципе всё спокойно. Ждем Новый Год, когда пароли юзеров и админов как раз истекут или забудут после праздников и будут вспоминать меня или московского безопасника добрым словом с его требованиями к паролям.

Показать полностью
1543

Будни web-разработчика

Сижу на серьезной встрече с потенциальным клиентом. Несколько специалистов рассказывали, что мы можем предложить, описывали все нюансы по будущему сайту...

Спустя около получаса рассказов клиент начинает поочерёдно поднимать руки, просит зеркало, чтобы посмотреть на своё лицо. Убедившись, что всё в порядке - говорит “блин, юзабилити, CMS, сео - слова вроде знакомые, но нифига не понимаю, думал у меня инсульт уже, напугали”.

112

Frontend как он есть

Frontend как он есть IT, IT юмор, Web-Программирование, Frontend

По мотивам поста Что скрывает web разработчик

и учёта комментария @ser60v

За предоставленный материал спасибо @Mrazita и её авторскому посту: Гомер уходит в кусты v.2

404

Как просматривать закрывшиеся сайты / удалённые файлы и предотвратить их бесследное исчезновение

КРАТКОЕ СОДЕРЖАНИЕ (кто не хочет читать):

- web-страницы в Интернете исчезают бесследно;

- чтобы исчезали не бесследно, web-страницы и файлы можно сохранять в Internet Archive по ссылке https://web.archive.org/save/АДРЕС_СТРАНИЦЫ;

- какие-то web-страницы не сохраняются, поэтому сначала сохраните в https://akkela.net/copyhtml/, а потом полученный URL по ссылке https://web.archive.org/save/АДРЕС_СТРАНИЦЫ;

- какие-то файлы не сохраняются, поэтому сначала сохраните в https://leopard.hosting.pecon.us/, а потом полученный URL по ссылке https://web.archive.org/save/АДРЕС_СТРАНИЦЫ;

- ещё большие тексты можно сохранять сначала в pastebin.com, а потом полученный URL по ссылке https://web.archive.org/save/АДРЕС_СТРАНИЦЫ;

- бонусом в статье рассказывается о способе сделать копию закрытых страниц и замену peeep.us;

- если не нравятся предложенные сайты, ищите альтернативы сами. :)


Подробнее (много текста):

История

Первые страницы в Интернете были созданы ещё в 1991 году.

Но 24 года назад, лишь в 1996 году Брюстером Кейлом была организована некоммерческая организация Internet Arсhive, собирающая копии веб-сайтов, с 2001 года предоставившая публичный доступ к своей Waybackmachine (накопилось свыше 50 петабайт данных и число перевалило за полтриллиона страниц).

Но, к сожалению, материалы за около 5 лет, когда сайты были, а архива не было, фактически потеряны.


Распадаются страны (например, домен .yu — Югославия), упраздняются организации, прекращают работу сайты, следовательно сведения бесследно исчезают.

Информация — это история и культура.

Доп.почитать: Почему у нас осталось так мало раннего Интернета (Хабрахабр)

https://ru.wikipedia.org/wiki/Архив_Интернета


Например, сайт прекратившей работу компании, создавшей один из первых интернет-браузеров:

https://web.archive.org/web/20070917180729/http://www.netscape.com/

Как просматривать закрывшиеся сайты / удалённые файлы и предотвратить их бесследное исчезновение Резервное копирование, Javascript, Internet Archive, Wayback Machine, Web, Pikaweb, Длиннопост

«Существует два типа людей: 1) которые ещё не делают резервное копирование и 2) которое уже делают.»


Лучшие практики того,

как можно вручную сохранить ценную информацию [почти] навечно (на примере Пикабу).


Чтобы сохранить АДРЕС_СТРАНИЦЫ, нужно прописать:

https://web.archive.org/save/АДРЕС_СТРАНИЦЫ

Чтобы найти АДРЕС_СТРАНИЦЫ потом:

https://web.archive.org/web/*/АДРЕС_СТРАНИЦЫ

Подробнее:


1) Web-страницы публично открытых сайтов (когда waybackmachine срабатывает).

Стандартно. «Скармливать» ему лучше чистую ссылку (например, https://pikabu.ru/story/_7676787, без заголовка в URL). Чтобы потом проще было найти в архиве, если статья исчезнет.

2) Текстовая информация.

Сохранить текст, большой текст можно в pastebin.com (должно хранить вечно, но кто знает).

А потом дополнительно для спокойствия сохраняем в Waybackmachine.

Обе ссылки можно дать, например, в комментарии.

3.1) Файлы по ссылкам.

Стандартно. Упомянутый Архив Интернета сохраняет файлы, если дать на них прямую ссылку.

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

3.2) Файлы по ссылкам, когда waybackmachine не сработал, ИЛИ же закрытые файлы.

Во-первых, применимо, когда сохранение не проходит из-за настроек сервера.

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

Тогда файл стоит «перезалить», сохранить и дать на него ссылку.


Последовательность действий моя:

- загружаем файл через https://leopard.hosting.pecon.us/ (даёт прямые ссылки; утверждает, что хранит файл вечно; до 100 мегабайтов);

- дополнительно сохраняем полученную ссылку в Waybackmachine;

- в комментариях к странице даём обе ссылки;

- опционно: сохраняем в waybackmachine ещё и статью с комментариями (где будут эти ссылки).


Критерии хостинга: без регистрации, получается прямая ссылка (которая сохранится в Waybackmachine), а бонусом идёт вечное хранение (как утверждается). Но если и не вечное, то зеркало будет в Архиве Интернета.

Если у вас есть подпадающие под эти критерии хостинги — кидайте в комментарии.

4.1) Web-страницы публично открытых сайтов, когда waybackmachine не сработал, ИЛИ же закрытые страницы.

Во-первых, применимо, когда сохранение конкретной страницы не проходит опять-таки из-за настроек сервера (например, сайт подгружает информацию по нажатию мыши).

Во-вторых, применимо, когда есть информация, которая доступна после авторизации, а давать логин-пароль не рационально.


С первым примером всё ясно.

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

В своё время для этого использовался созданный в 2009 году сайт peeep.us, который бонусом был ещё и удобным сокращателем ссылок. Но он увы канул в Лету... Ничто не вечно.


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

https://akkela.net/copyhtml/


Как работать:

- зайти на сайт, скопировать букмарклет себе в браузер (или быть готовым запустить скрипт, например, через консоль);

- зайти на нужную страницу;

- запустить букмарклет, чтобы осуществить копирование страницы. Учтите, она пропадёт в скором времени!

- дополнительно сохранить её с помощью в waybackmachine навечно;

- в комментарии к странице даём обе ссылки;

- опционно: сохраняем в waybackmachine ещё и статью с комментариями (где будут эти ссылки).

4.2) Страницы закрытых сайтов (исправленные).

Как и в peeep.us, разумеется, если вам дали страницу, полностью доверять содержимому на ней нельзя: перед загрузкой страницы её можно отредактировать и отправить на сервер отредактированную (подменённую) версию.


Как подменить:

После изменения HTML страницы данный код позволяет отправить страницу, как её видит пользователь:

(function() {
var send = function(url, content, type) {
if (type == null)
type = 'text/html;charset=utf-8';
else
type = type.match(/^[^;]+/)+';charset=utf-8';
var form = document.createElement('form');
form.setAttribute('method', 'post');
form.setAttribute('action', 'http://akkela.net/create.php');
form.setAttribute('enctype', 'multipart/form-data');
form.setAttribute('accept-charset', 'utf-8');
var input = document.createElement('input');
input.setAttribute('type', 'hidden');
input.setAttribute('name', 'r_content');
input.setAttribute('value', content);
form.appendChild(input);
input = input.cloneNode(false);
input.setAttribute('name', 'r_url');
input.setAttribute('value', window.location.protocol + "//" + window.location.hostname);
form.appendChild(input);
input = input.cloneNode(false);
input.setAttribute('name', 'r_type');
input.setAttribute('value', type);
form.appendChild(input);
document.body.appendChild(form);
form.submit();
document.body.removeChild(form);
};
var showLoad = function() {
if (document.getElementById('peeeppeeeppeeep') != null)
return;
var div = document.createElement('div'), img = document.createElement('img');
img.setAttribute('src', 'http://www.peeep.us/assets/load.gif');
div.appendChild(img);
div.setAttribute('style', 'position: fixed; left: 50%; top: 0; margin-left: -24px; padding: 8px; background: rgba(255,255,255,0.9);');
div.id = 'peeeppeeeppeeep';
document.body.appendChild(div);
};
try {
showLoad();
var url = location.href;
var r = new XMLHttpRequest();
r.open('GET', url, true);
//r.overrideMimeType('application/octet-stream');
r.onreadystatechange = function() {
try {
if (r.readyState == 4) {
if ((r.status >= 200 && r.status < 300) || (r.status >= 400 && r.status < 500)) {
//send(url, r.responseText, r.getResponseHeader('Content-type'));
send(url, document.documentElement.outerHTML, r.getResponseHeader('Content-type'));
} else {
throw r.statusText;
}
}
}
catch(e) { alert('Error: '+e+'\nPlease, try again'); }
};
r.send(null);
}
catch(e) { alert('Error: '+e+'\nPlease, try again'); }
})();

Пример результата:

- Хабрахабр: лучшие месяца + доп.абзац (скоро удалится).

- Зеркало, которое не удалится.

Типичные примеры спасения файлов, когда ссылка в посте больше не работает, и иное:

1. Пикабу: Векторные дома в изометри, раздаю бесплатно:) (с сайта, указанного в посте, не грузится, но Архив Интернета скопировал).

2. Голосовое управление офисной оргтехникой (по ссылке в посте не грузится, но файл залит на хостинг, а потом сохранён в Архив Интернета).

3. Сайт peeep.us больше не работает, пропал и их javascript, но код сохранён в 2017 году.

4. Аналогичный файл javascript сайта-аналога, не был сохранён. А был сохранён позавчера мной, и я был первым. Если что с сайтом случится, файл останется.

Показать полностью 1
549

Типичный клиент

Типичный клиент Программирование, Веб-Разработка, Веб-Дизайн, Профессиональный юмор, Workchronicles

— Не могли бы вы сделать бесконечную прокрутку, а так же добавить к ней постраничный вывод информации?

— Постойте, я не понимаю. Вы хотите бесконечную прокрутку или постраничный вывод?

— Да. Не могли бы вы так же...

(Разработчик бьётся головой о ноутбук)


P.S. А ещё бесконечный скролл неплохо дополняется футером с важными ссылками, которые больше нигде не дублируются.

47

Как я учила фронтенд – плюсы и минусы разных методов

В 27 лет я решила уйти из маркетинга и стать верстальщиком, а потом и фронтенд-разработчиком. О том как это происходит – в прошлом посте, в этом – о моих способах обучения, чтобы эффективно и нескучно. Итак, мой рейтинг:


1. Боевой опыт на работе в команде

Как я учила фронтенд – плюсы и минусы разных методов IT, Верстка, Frontend, Обучение, Учеба, Длиннопост

На мой вкус, эффективнее работы на реальных проектах нет ничего. Адекватные коллеги не дадут идти совсем в говнокод или не в ту степь, кроме того, без коллег бывают случаи, когда один на один сидишь с задачкой 3 дня, когда она запросто решается известной библиотекой за 15 минут, но тебе просто неоткуда о ней узнать, а в коллективе обычно можно как минимум спросить "в какую сторону гуглить". Здесь главное соблюсти грань между "не сидеть 2 дня" и не "спрашивать, не погуглив", но обычно собственная адекватность или уровень терпения коллег помогают найти баланс. Звучит неплохо, но новичку при поиске работы обычно приходится соглашаться не на самые лучшие условия, и это не только про зп.


Плюсы:

+ максимально эффективно

+ обучение в рабочее время, не надо выкраивать дополнительное

+ расширение портфолио с согласия заказчика

+ если повезёт, то можно быстро вырасти в этой компании или перейти в другую на новых условиях

+ дают денег


Минусы:

– денег дают мало

– подрабатывать где-то ещё времени нет

– без опыта не берут


2. Фриланс

Как я учила фронтенд – плюсы и минусы разных методов IT, Верстка, Frontend, Обучение, Учеба, Длиннопост

В любом случае – как на картинке будет не сразу :) на несложные проекты по верстке обычно довольно большая конкуренция на биржах. Совсем новичкам не советую фриланс вообще, а после 3-6 месяцев работы в офисе, почему бы и не да. Это те же боевые проекты, возможно даже с небольшой обратной связью – заказчик уж постарается протестировать то, что вы написали, перед тем как заплатит. Однако старших коллег рядом нет, спросить зачастую не у кого. Кстати, когда совсем не у кого спросить и не помогает ни Гугл, ни StackOverflow, есть чаты в телеграмме по вёрстке и по разработке, спросить можно там - могут ответить, но могут и посамоутверждаться, тут как повезет. Отдельная специфика фриланса для разработчиков с небольшим опытом – его сложно найти, пока круг знакомств в сфере совсем маленький. Многие ребята идут на биржи, но быстро в них разочаровываются – некоторые такие сайты ещё года полтора назад дружно сделали отклики на задачи платными, да и на отклики новичков заказчики мало обращают внимания. Последних тоже можно понять – у них есть проект, например, на вёрстку одной странички, и они скорее доверят ее Антону с 400-ми положительных отзывов и рейтингом 8000, чем MegaMonstr1997, зарегистрировавшемуся 16 минут назад и, как ни странно, ещё не получившему 400 положительных отзывов. Мой опыт с биржами – нашла ту, где первые 25 откликов бесплатны, писала заказчикам подробные сопроводительные "Посмотрела сайт, с задачей справлюсь, портфолио вот, еще заметила, что у вас немного на мобилке едет верстка, бесплатно поправлю", где-то на 12-15 отклике случился первый заказ. Естественно, "бесплатно поправлю" – это про работы на 5-15 минут. А иногда первым фрилансом становятся сайтики для друзей, знакомых или для мамы. В последнем случае вы вряд ли будете брать с мамы деньги, имейте совесть, но наверняка получите столько тёплых слов и благодарностей, сколько не получите ни от одного заказчика :З


Плюсы

+ боевой опыт

+ расширение портфолио с согласия заказчика

+ денег все ещё дают


Минусы

– нет опытных коллег рядом (здесь и далее)

– денег ещё меньше

– фриланс сложно найти


3. Курсы с ментором на 2-3 месяца

Как я учила фронтенд – плюсы и минусы разных методов IT, Верстка, Frontend, Обучение, Учеба, Длиннопост

Я и училась, и сама сейчас работаю наставником на таких курсах, и это хороший способ изучения. Плюс составленная изначально программа даёт системность, тогда как ментор не даёт расслабиться. Будьте готовы, что курсы изначально будут троллить вас обещаниями "Зарплата 120 тысяч через три месяца!", "Изучим одновременно Html, Css, React, Php, Java c нуля за полгода!", "Фулл-стек за 12 занятий")) Это почти всегда неправда. Однако хорошие курсы разложат по полочкам, не дадут облегчить себе задачу при выполнении практики и написать откровенной лажи


Плюсы

+ действительно дают знания

+ систематизация

+ ментор

+ код ревью


Минусы

– сложно выбрать хорошие курсы

– сложно выбрать толкового ментора, обычно кот в мешке

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

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

– работодателю обычно пофиг на курсы и сертификаты с них

– дорого (в среднем от 20 тыс до 60 тыс) – если вы студент

– дёшево (в среднем 3-7 тыс) – если вы ментор и хотите подзаработать


4. Бесплатные видосы с Ютуба и где найдете

Как я учила фронтенд – плюсы и минусы разных методов IT, Верстка, Frontend, Обучение, Учеба, Длиннопост

Неожиданно, что выше книг-статей и прочего? А вот так. Для меня видео-уроки стали просто открытием. В зависимости от силы мотивации в конкретный день я выбирала соответствующий по длительности видос по вёрстке с симпатичным результатом в конце. Например, поисковый запрос на Ютубе мог выглядеть как "Верстка лендинга html", далее смотрю, сколько длится видео и что получается в конце. Мое любимое – 2-2,5 часа и небольшой лендосик по путешествиям или вкусняхам. Но был и один курс на 10+ занятий с более серьезным проектом в конце. Суть просмотра – останавливать видео каждые 30 секунд и повторять за автором, делать ту же страничку / приложение. Звучит просто, но уже на 15-ой минуте у тебя начинает отваливаться то, что у ведущего прекрасно работает. Начинаешь искать, выясняется, что забыл пару css свойств, которые автор быстро напечатал на 3-ей минуте. И вот этот поиск – самое ценное, в процессе поиска учишься отладке через DevTools браузера, через консоль и тд.


Плюсы:

+ бесплатно

+ хороший обучающий эффект

+ быстрый результат в виде знаний и сверстанного шаблона


Минусы:

– можно попасть на недалёкого автора и научиться делать неправильно


4. Книги с упражнениями

Как я учила фронтенд – плюсы и минусы разных методов IT, Верстка, Frontend, Обучение, Учеба, Длиннопост

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


Плюсы:

+ системность

+ недорого по сравнению с курсами


Минусы:

– очень быстро устаревают

– без практики прочитанное усваивается очень слабо

– совсем не похоже на тусу по уровню веселья


5. Статьи

Как я учила фронтенд – плюсы и минусы разных методов IT, Верстка, Frontend, Обучение, Учеба, Длиннопост

Статей "Советы по отладке JS", "CSS-трюки: режимы наложения цветов", "10 хитростей JavaScript о которых вы не знали" – великое множество, однако если пока для человека весь JavaScript - одна большая хитрость, толку от них будет немного. Зато уже в процессе изучения и работы во фронтенде, одна прочитанная с утра по пути в офис статья может дать не только понимание того, что нового появилось в мире разработке, но и +100 к чсв, а также возможность лёгкого выпендрежа перед коллегами (или начальством, если повезёт).


Плюсы:

+ больше шансов быть всегда в теме происходящего в мире разработки

+ малая трудозатратность


Минусы:

– бессистемно

– дают вишенки на торте, но не сами навыки


6. Игры типа рпг на минималках

Как я учила фронтенд – плюсы и минусы разных методов IT, Верстка, Frontend, Обучение, Учеба, Длиннопост
Как я учила фронтенд – плюсы и минусы разных методов IT, Верстка, Frontend, Обучение, Учеба, Длиннопост

В отличие от книг звучит и выглядит весело. За все игрухи не скажу, но мне попалась та, которая стоила 4 доллара в месяц и имела сотни заданий вида "Есть твой персонаж, есть песчаные яки - от них надо уклоняться, но стрелять по ним нельзя, есть скелеты - их бить мечом, есть орки - если слабый, то защищаться щитом и бить мечом, если сильный, то создавать своих клонов, сначала надо всех орков рассортивать по силе". Далее игрок преобразует то, что понял из "ТЗ" в код на JS с описанными методами "защищаться щитом", "рубить мечом", "создавать клонов", обычно в циклов, условий, сортировки. На мой взгляд, такие игры могут быть полезны только для совсем новичков, которым надо попробовать написать первые циклы и условия, для всех остальных толку будет немного. Еще – вы фиг докажете начальству, что таким образом учите JS :)


Способы, которые я сама не пробовала – например, поиск частного ментора, я не описываю.

Показать полностью 7
370

Как случайно написать Web-GUI для Haproxy

Современный мир системных администраторов обленил нас красивыми web-face-ами, что даже не охота ставить софт, где нет этого самого «гуя» (чувствую сейчас полетят камни от правоверных строчкеров), ну не через строку же постоянно туда лазить, правда? Все бы ничего, если софт поставил, настроил и забыл, а что делать, если туда надо постоянно лазить, править, ну и конечно же нет лога всех действий, не писать же каждый раз cp cfg cfg_back, со временем запутаешься и забьешь на это дело.

Как случайно написать Web-GUI для Haproxy Системное администрирование, IT, Linux, Gui, Nginx, Web, Истории из жизни, Длиннопост

Много лет назад познакомился я с таким чудесным балансером, как Haproxy. Все чудесно и красиво. Стало у меня их много и задумался я о поиске GUI к нему, но его на удивление не было. Очень популярный софт, к тому же достаточно старый, ну да ладно подумал я и продолжил изредка править ручками в своем любимом vi и иметь кучу открытых вкладок со статистикой всех активных серверов. Но настало время и мне пришлось удовлетворять «хотелки» людей, которые писали софт для работы через http, вот тут и началось интересное…

Как случайно написать Web-GUI для Haproxy Системное администрирование, IT, Linux, Gui, Nginx, Web, Истории из жизни, Длиннопост

Ручки зачесались, глазки загорелись и я приступил. Точнее начал думать на чем писать, вспоминать давно-давным забытый PHP, как-то не хотелось, да и казалось, что он не совсем подходит для этого дела. В итоге выбор пал на Python, в будущем точно пригодится подумал я и началось впитывание информации.

В начале задачи стояли не такие уж и сложные: возможность редактировать конфиги из веб интерфейса из одной точки входа, сохранения предыдущих версий конфигов. Данный, не особо большой функционал получилось реализовать достаточно быстро, но тут во мне взыграла то ли админская лень, то ли пресловутый перфекционизм и мне этого показалось конечно же мало. И тут начали появляться такие фичи как: сравнение двух конфигов, логирование всех действий связанных с конфигами, Runtime API и добавления секций, через web.

Как случайно написать Web-GUI для Haproxy Системное администрирование, IT, Linux, Gui, Nginx, Web, Истории из жизни, Длиннопост

И как порядочный UNIX администратор живущий за счет свободного ПО я решил поделится с миром, а в друг кому-то пригодится? Но для этого надо было сделать все так, чтобы не приходилось лазить в код, но максимум в конфиг приклады(Сейчас большинство настроек переехало в базу. Как по мне их стало удобней редактировать и при обновлении не будет ошибок из-за отсутствия в конфиге какого-либо параметра).

Спустя месяц я выложил свою поделку на Github особо не на что не рассчитывая. А зря, софт оказался слегка востребованным и тут началось самое интересное… Активная «допилка» идет уже почти год. Порой есть желание все это бросить, т.к. мои потребности перекрыты уже давно. Ну вот зачем мне возможность развернуть «кластер» с keepalived и HAProxy через веб морду, если у меня это занимает от силы пару минут? А людям оказывается надо, да и мне интересно, и есть чем заняться. Хотя конечно же есть и нужные мне функции, например, как мониторинг бэкенд серверов, доступны ли они для Haproxy. У нас конечно же есть корпоративный мониторинг, но там сидят люди, которые могут достаточно долго реагировать, + т.к. мой отдел занимается разработкой и софт то появляется, то исчезает достаточно долго пробиваться через бюрократию.

А с недавних пор HAProxy-WI так же поддерживает NGINX и дает возможность установить полноценный мониторинг состоящий из Grafana, Prometheus, Nginx и HAProxy экспортеров. Так же появилась возможность простого мониторинга портов на предмет доступности порта, ответа HTTP и проверка ответа по ключевому слову. Да, не много функций, но зато ставить и админить легко :)

Как случайно написать Web-GUI для Haproxy Системное администрирование, IT, Linux, Gui, Nginx, Web, Истории из жизни, Длиннопост

В общем решил поделится, ведь получается, что это единственный бесплатный GUI. А вдруг кому пригодится? И ссылка, вдруг кого заинтересует: https://github.com/Aidaho12/haproxy-wi/

Показать полностью 2
Похожие посты закончились. Возможно, вас заинтересуют другие посты по тегам: