HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-21
1 <p><a>#статьи</a></p>
1 <p><a>#статьи</a></p>
2 <ul><li>16 мар 2020</li>
2 <ul><li>16 мар 2020</li>
3 <li>0</li>
3 <li>0</li>
4 </ul><h2>Изобретайте велосипеды: почему это должен делать каждый разработчик</h2>
4 </ul><h2>Изобретайте велосипеды: почему это должен делать каждый разработчик</h2>
5 <p>Сказать программисту, что уже есть библиотека, делающая Х, - это то же самое, что сказать музыканту, что уже есть песня про любовь.</p>
5 <p>Сказать программисту, что уже есть библиотека, делающая Х, - это то же самое, что сказать музыканту, что уже есть песня про любовь.</p>
6 <p> vlada_maestro / shutterstock</p>
6 <p> vlada_maestro / shutterstock</p>
7 <p>Пишет о программировании, в свободное время создаёт игры. Мечтает открыть свою студию и выпускать ламповые RPG.</p>
7 <p>Пишет о программировании, в свободное время создаёт игры. Мечтает открыть свою студию и выпускать ламповые RPG.</p>
8 <p>Созданием велосипедов в программировании (и не только) называют решение проблемы, которая уже давно решена. Например, разработку сайта на чистом языке вместо использования фреймворков.</p>
8 <p>Созданием велосипедов в программировании (и не только) называют решение проблемы, которая уже давно решена. Например, разработку сайта на чистом языке вместо использования фреймворков.</p>
9 <p>Многие считают это занятие чем-то неэффективным: оно отнимает время, которое можно потратить на что-то стоящее, вместо того чтобы делать то, что уже сделали за тебя.</p>
9 <p>Многие считают это занятие чем-то неэффективным: оно отнимает время, которое можно потратить на что-то стоящее, вместо того чтобы делать то, что уже сделали за тебя.</p>
10 <p>Я с этим не согласен, потому что очень часто проблему можно решить более эффективным способом.</p>
10 <p>Я с этим не согласен, потому что очень часто проблему можно решить более эффективным способом.</p>
11 <p>Важно! Всё это касается ваших личных проектов или проектов, в которых кодом занимаетесь только вы. Работая в команде, используйте выбранные готовые инструменты.</p>
11 <p>Важно! Всё это касается ваших личных проектов или проектов, в которых кодом занимаетесь только вы. Работая в команде, используйте выбранные готовые инструменты.</p>
12 <p>Больше всех готовые решения любят разработчики на <a>JavaScript</a> - они чаще других пользуются фреймворками и библиотеками.</p>
12 <p>Больше всех готовые решения любят разработчики на <a>JavaScript</a> - они чаще других пользуются фреймворками и библиотеками.</p>
13 <p>Доходит даже до того, что они называют себя не JS-разработчиками, а React-, Angular-, Vue-разработчиками и так далее. В принципе, в этом нет ничего плохого - работодателю проще найти человека, который разбирается в том, что уже используется в его проекте. Но тут вас подстерегает первая проблема.</p>
13 <p>Доходит даже до того, что они называют себя не JS-разработчиками, а React-, Angular-, Vue-разработчиками и так далее. В принципе, в этом нет ничего плохого - работодателю проще найти человека, который разбирается в том, что уже используется в его проекте. Но тут вас подстерегает первая проблема.</p>
14 <p>Многие разработчики на фреймворках зачастую плохо знают сам язык и как он вообще устроен. В случае с JS многих пугает работа с DOM - они не знают, что это и зачем нужно. А это, между прочим, самое главное в JavaScript.</p>
14 <p>Многие разработчики на фреймворках зачастую плохо знают сам язык и как он вообще устроен. В случае с JS многих пугает работа с DOM - они не знают, что это и зачем нужно. А это, между прочим, самое главное в JavaScript.</p>
15 <p>JS был одним из первых языков, которые я изучал. На тот момент он показался мне сложным, а вот jQuery я освоил достаточно быстро. То есть я смог разобраться с фреймворком, не зная языка, - мне это было не нужно, потому что я и без него справлялся.</p>
15 <p>JS был одним из первых языков, которые я изучал. На тот момент он показался мне сложным, а вот jQuery я освоил достаточно быстро. То есть я смог разобраться с фреймворком, не зная языка, - мне это было не нужно, потому что я и без него справлялся.</p>
16 <p>Другой яркий пример связан с <a>PHP</a>: однажды мне пришлось переделывать проект за другим разработчиком, который использовал библиотеку для работы с базой данных.</p>
16 <p>Другой яркий пример связан с <a>PHP</a>: однажды мне пришлось переделывать проект за другим разработчиком, который использовал библиотеку для работы с базой данных.</p>
17 <p>Автор библиотеки обещал простую и безопасную отправку запросов, но, изучив документацию, я пришёл к выводу, что ничего простого тут нет. Было лишь обилие методов с названиями, по котором сложно было понять, что они делают, и странная система плейсхолдеров.</p>
17 <p>Автор библиотеки обещал простую и безопасную отправку запросов, но, изучив документацию, я пришёл к выводу, что ничего простого тут нет. Было лишь обилие методов с названиями, по котором сложно было понять, что они делают, и странная система плейсхолдеров.</p>
18 <p>К тому же в PHP уже есть необходимый функционал, который действительно прост и безопасен, - PDO. Знай об этом предыдущий разработчик или автор библиотеки - мне не пришлось бы мучиться.</p>
18 <p>К тому же в PHP уже есть необходимый функционал, который действительно прост и безопасен, - PDO. Знай об этом предыдущий разработчик или автор библиотеки - мне не пришлось бы мучиться.</p>
19 <p>Так как в веб-разработке постоянно приходится иметь дело с базами данных, я написал<a>свой велосипед</a>поверх PDO. В результате я лучше разобрался в том, как устроены базы данных и запросы к ним, и написал то решение, которое будет удобно мне и отлично впишется в мои проекты.</p>
19 <p>Так как в веб-разработке постоянно приходится иметь дело с базами данных, я написал<a>свой велосипед</a>поверх PDO. В результате я лучше разобрался в том, как устроены базы данных и запросы к ним, и написал то решение, которое будет удобно мне и отлично впишется в мои проекты.</p>
20 <p>Это был статичный метод, который принимает запрос и массив с параметрами, а потом возвращает либо массив со строками из таблицы, либо номер вставленной строки, либо просто булево значение - в зависимости от того, какой запрос был отправлен.</p>
20 <p>Это был статичный метод, который принимает запрос и массив с параметрами, а потом возвращает либо массив со строками из таблицы, либо номер вставленной строки, либо просто булево значение - в зависимости от того, какой запрос был отправлен.</p>
21 <p>Пересматривая его сейчас, я вижу, что он не идеален, но само его написание было для меня полезным опытом. Не говоря уже о том, что он ускорил мою работу над проектами, когда я ещё писал на PHP.</p>
21 <p>Пересматривая его сейчас, я вижу, что он не идеален, но само его написание было для меня полезным опытом. Не говоря уже о том, что он ускорил мою работу над проектами, когда я ещё писал на PHP.</p>
22 <p>Сейчас, если мне нужно решить небольшую проблему, я стараюсь писать собственные велосипеды, используя возможности языка.</p>
22 <p>Сейчас, если мне нужно решить небольшую проблему, я стараюсь писать собственные велосипеды, используя возможности языка.</p>
23 <p>Многие фреймворки и библиотеки, вроде того же jQuery, снижают скорость работы сайта и занимают место на сервере. Многие так зависят от разных подключаемых скриптов, что их веб-страницы начинают выглядеть так:</p>
23 <p>Многие фреймворки и библиотеки, вроде того же jQuery, снижают скорость работы сайта и занимают место на сервере. Многие так зависят от разных подключаемых скриптов, что их веб-страницы начинают выглядеть так:</p>
24 <p>Разработчики стараются делать свои библиотеки как можно более функциональными, но большинство из нас этими функциями никогда не воспользуется.</p>
24 <p>Разработчики стараются делать свои библиотеки как можно более функциональными, но большинство из нас этими функциями никогда не воспользуется.</p>
25 <p>Если вы пользуетесь jQuery, то, скорее всего, вам нужны только AJAX, методы для изменения контента/классов/стилей и селекторы. А это лишь малая капля того, что есть в jQuery.</p>
25 <p>Если вы пользуетесь jQuery, то, скорее всего, вам нужны только AJAX, методы для изменения контента/классов/стилей и селекторы. А это лишь малая капля того, что есть в jQuery.</p>
26 <p>В итоге браузер пользователя загружает большой скрипт, который толком-то и не нужен, - а это дополнительные оперативка и время скачивания страницы.</p>
26 <p>В итоге браузер пользователя загружает большой скрипт, который толком-то и не нужен, - а это дополнительные оперативка и время скачивания страницы.</p>
27 <p>Вместо того чтобы грузить сайт кучей всего, попробуйте написать все решения самостоятельно: так вы избавитесь от лишнего и у вас будут только те скрипты, которые нужны для работы сайта.</p>
27 <p>Вместо того чтобы грузить сайт кучей всего, попробуйте написать все решения самостоятельно: так вы избавитесь от лишнего и у вас будут только те скрипты, которые нужны для работы сайта.</p>
28 <p>Это позволит ускорить его загрузку и снизить потребление оперативной памяти. Даже очень сложные библиотеки можно заменить относительно небольшим объёмом кода.</p>
28 <p>Это позволит ускорить его загрузку и снизить потребление оперативной памяти. Даже очень сложные библиотеки можно заменить относительно небольшим объёмом кода.</p>
29 <p>Например, чтобы реализовать описанный выше часто используемый функционал jQuery, потребуется около 5 КБ скриптов, а может, даже и меньше. Для сравнения: сама библиотека весит 88 КБ (минифицированная версия).</p>
29 <p>Например, чтобы реализовать описанный выше часто используемый функционал jQuery, потребуется около 5 КБ скриптов, а может, даже и меньше. Для сравнения: сама библиотека весит 88 КБ (минифицированная версия).</p>
30 <p>Это, пожалуй, самая серьёзная проблема.</p>
30 <p>Это, пожалуй, самая серьёзная проблема.</p>
31 <p>Когда вы в последний раз изучали исходный код библиотеки, которой пользуетесь? Разработчики либо могли случайно допустить ошибку, из-за которой ваш сайт будет взломан, либо добавили бэкдор, чтобы самим получить доступ к серверу.</p>
31 <p>Когда вы в последний раз изучали исходный код библиотеки, которой пользуетесь? Разработчики либо могли случайно допустить ошибку, из-за которой ваш сайт будет взломан, либо добавили бэкдор, чтобы самим получить доступ к серверу.</p>
32 <p>В 2018 году в одной из популярных библиотек для Node Package Manager был<a>обнаружен</a>серьёзный бэкдор, который позволял запускать на сервере произвольный код.</p>
32 <p>В 2018 году в одной из популярных библиотек для Node Package Manager был<a>обнаружен</a>серьёзный бэкдор, который позволял запускать на сервере произвольный код.</p>
33 Когда скачал для сайта скрипт валидации бесплатно и без смс<p>Также бэкдоры находили сразу в <a>73 библиотеках</a>и <a>300 приложениях</a> - и это только на GitHub, где любой может посмотреть код публичного репозитория.</p>
33 Когда скачал для сайта скрипт валидации бесплатно и без смс<p>Также бэкдоры находили сразу в <a>73 библиотеках</a>и <a>300 приложениях</a> - и это только на GitHub, где любой может посмотреть код публичного репозитория.</p>
34 <p>Никто из нас не способен создать систему, которая будет защищена от взлома на 100%: если у злоумышленника достаточно времени, знаний и средств, он способен обойти любые препятствия.</p>
34 <p>Никто из нас не способен создать систему, которая будет защищена от взлома на 100%: если у злоумышленника достаточно времени, знаний и средств, он способен обойти любые препятствия.</p>
35 <p>Всё, что вы можете, - повысить ресурсозатратность взлома настолько, чтобы он перестал быть рентабельным. Никто не захочет взламывать блог о садоводстве, если для этого придётся сильно напрягаться. Другое дело, если это сайт Microsoft.</p>
35 <p>Всё, что вы можете, - повысить ресурсозатратность взлома настолько, чтобы он перестал быть рентабельным. Никто не захочет взламывать блог о садоводстве, если для этого придётся сильно напрягаться. Другое дело, если это сайт Microsoft.</p>
36 Кадр из х/ф }{0ТТ@БЬ)Ч<p>Разобравшись в том, какие приёмы взлома самые распространённые, вы сможете лучше защищать свои проекты. Это, в свою очередь, сделает вас более ценным специалистом.</p>
36 Кадр из х/ф }{0ТТ@БЬ)Ч<p>Разобравшись в том, какие приёмы взлома самые распространённые, вы сможете лучше защищать свои проекты. Это, в свою очередь, сделает вас более ценным специалистом.</p>
37 <p>Я считаю, что каждый программист должен уметь реализовать всё, что ему необходимо, самостоятельно. Естественно, это не значит, что нужно каждый раз писать с нуля весь код для каждого проекта - вы можете сделать несколько собственных библиотек и использовать их, когда они будут нужны.</p>
37 <p>Я считаю, что каждый программист должен уметь реализовать всё, что ему необходимо, самостоятельно. Естественно, это не значит, что нужно каждый раз писать с нуля весь код для каждого проекта - вы можете сделать несколько собственных библиотек и использовать их, когда они будут нужны.</p>
38 <a><b>Бесплатный курс по Python ➞</b>Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу</a>
38 <a><b>Бесплатный курс по Python ➞</b>Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу</a>