Pull to refresh
4
0
Send message

Программист учится рисовать. Дневник Емели

Reading time16 min
Views34K
Так получилось, что моим основным хобби на лихой 2020-й год стало освоение ремесла рисования.

Еще в январе я дал себе некое обещание в виде цели к концу года — прокачать навык рисования (звучит конечно абстрактно и совсем не по SMART-у, я думаю, это и повлияло в дальнейшем на то, как я развивал этот навык весь год и что получилось в итоге).

spoiler
В конце года я остался доволен собой и окончательно понял, что я хотел бы прокачиваться и дальше!

image
Так выглядел мой уровень изобразительных навыков в ноябре предыдущего (2019-го) года

Формат подачи данной статьи — это на 95% личный дневник, который я вел в гугл-доке, записывая, что я делал каждый месяц, свои ощущения и как-то фиксируя собственный прогресс — смотрел, сколько работ мне удалось нарисовать и какого они были качества — нравились ли они мне лично или были совсем так себе по исполнению.
Читать дальше →
Total votes 144: ↑143 and ↓1+142
Comments123

Защита от SQL-инъекций в PHP и MySQL

Reading time26 min
Views252K
К своему удивлению, я не нашёл на Хабре исчерпывающей статьи на тему защиты от инъекций. Поэтому решил написать свою.

Несколько пространный дисклеймер, не имеющий прямого отношения к вопросу
Давайте признаем факт: количество статей (и комментариев) на тему защиты от SQL-инъекций, появившихся на Хабре в последнее время, говорит нам о том, что поляна далеко не так хорошо истоптана, как полагают некоторые. Причём повторение одних и тех же ошибок наводит на мысль, что некоторые заблуждения слишком устойчивы, и требуется не просто перечисление стандартных техник, а подробное объяснение — как они работают и в каких случаях должны применяться (а в каких — нет).

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

Я не буду пытаться изображать полиглота и писать рекомендации для всех БД и языков разом. Достаточное количество опыта у меня есть только в веб-разработке, на связке PHP/MySQL. Поэтому все практические примеры и рекомендации будут даваться для этих технологий. Тем не менее, изложенные ниже теоретические принципы применимы, разумеется, для любых других языков и СУБД.

Сразу отвечу на стандартное замечание про ORM, Active record и прочие query builders: во-первых, все эти прекрасные инструменты рождаются не по мановению волшебной палочки из пены морской, а пишутся программистами, используя всё тот же грешный SQL. Во-вторых, будем реалистами: перечисленные технологии — хорошо, но на практике сырой SQL постоянно встречается нам в работе — будь то legacy code или развесистый JOIN, который транслировать в ORM — себе дороже. Так что не будем прятать голову в песок и делать вид, что проблемы нет.

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

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

Правила, соблюдение которых гарантирует нас от инъекций


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

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

Но вперёд, читатель — перейдём уже к подробному разбору.
Читать дальше →
Total votes 128: ↑98 and ↓30+68
Comments97

Чеклист фронтенд-разработчика

Reading time12 min
Views70K
Глеб Летушов, редактор-фрилансер, адаптировал для блога Нетологии чеклист с Github от David Dias. Этот чеклист уже переводили, но так как на Хабре его нет, мы решили, что он пригодится. В чеклисте собран полный список элементов, которые необходимо проверить перед запуском и публикацией сайта.



Список основан на многолетнем опыте фронтенд-разработчиков, а дополнения собраны из общедоступных источников.
Читать дальше →
Total votes 30: ↑24 and ↓6+18
Comments21

Светодиодный фотоосветитель Yongnuo YN300 с высоким CRI

Reading time2 min
Views11K
Недавно ко мне в гости заезжал видеограф Андрей Тараканов и у него с собой был китайский осветитель, очень популярный у тех, кто снимает фото и видео. Мы измерили его параметры и выяснили, действительно ли у него столь высокий индекс цветопередачи, как обещают.

Читать дальше →
Total votes 34: ↑34 and ↓0+34
Comments16

Рубрика «Без носков». Подарки мужчинам глазами мужчин

Reading time10 min
Views64K
Ну вот скажите, мужики, что нам подарить на 23 февраля? Обычные атрибуты уже не просто превратились в мемы, а даже как-то обижают. Незабываемый секс — раз в год, вы серьёзно? Зарубу в боулинг или пейнтбол с друзьями? Оставим этот вариант офисным HR-ам. Мы не капризные и не ироничные, нас просто никто не спрашивал. Пришлось провести своеобразное исследование, чтобы определить, чего на самом деле хотят мужчины. Результаты нас немного удивили.


Total votes 35: ↑28 and ↓7+21
Comments92

Умная «Квартира»

Reading time7 min
Views65K
Всем привет! Наконец-таки подошел к концу капитальный ремонт в квартире, и в связи с этим хочу поделиться с Вами, реализованным проектом «Умной квартиры» с базовыми возможностями управления освещением, подогревом теплых полов, контроля температуры и влажности помещений, и прочими плюшками. Описательная часть будет выполнена в виде мануала (так проще излагать что ли).

image
Читать, если интересно!
Total votes 42: ↑40 and ↓2+38
Comments91

Как сделать удобный синтезатор своими руками

Reading time5 min
Views36K
В детстве у меня было пианино, такое настоящее, советское, киллограм на 300. Мне нравилось на нем бренчать, а после окончания музыкальной школы даже кое-что играть. Пианино — это классно, аутентично, но совершенно не практично. А чтобы совсем прям для души, нужна еще и барабанная установка, пяток примочек к электрогитаре, кларнет, ситар и сэмпловые лупы…



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

Клавиатура ПК совсем не похожа на клавишный инструмент, здесь все не так. Более того, для обучения ребенка это совсем не годится. Кажется выбора не остается, как приобретать синтезатор. Но по-прежнему раздирают меня сомнения.
Total votes 27: ↑26 and ↓1+25
Comments30

Заметки к самостоятельному изучению французского языка

Reading time6 min
Views26K
В прошлом году я решил продолжить изучение французского языка, моего второго иностранного языка. Я решил учить язык самостоятельно, опираясь на грамматико-переводной метод. Я поставил себе цель — дойти до уровня свободного чтения статей на французской википедии. Чтобы полностью сконцентрироваться на этой цели, я отложил изучение разговорной части на потом.

Первый подход к французскому у меня состоялся почти 8 лет назад. Воодушевленный успехами в английском, который я довольно неорганизованно учил со школы и который резко пошел в гору при поступлении в иностранную компанию, я решил взяться за французский. Как известно, в английском языке добрая половина слов имеет романское происхождение, поэтому мне захотелось укрепить свой английский познанием французского. Еще хотелось, например, иметь возможность прочитать «Войну и Мир», без необходимости обращаться к сноскам в французских цитатах. Звучание французского языка и французская культура меня не сильно интересовали, и каких-то романтических побуждений к изучению «языка любви» у меня не было.
Читать дальше →
Total votes 15: ↑15 and ↓0+15
Comments36

Невероятно эффектная цветомузыка на Arduino и светодиодах

Reading time4 min
Views162K
С наступающим! Приближается Новый год, а значит, пора срочно создавать настроение! Ну и как всегда в это время года рождаются десятки электронных схем различных цветомузыкальных установок.

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



Как большой поклонник, так называемых адресных светодиодов, хочу показать вам очень простую и удивительную цветомузыку. Я вообще такой ни разу не видел. Пока не собрал за один вечер. Итак, визуализатор звука!
Total votes 51: ↑46 and ↓5+41
Comments116

Must have книги для прокачки английского. Подборка от преподавателей

Reading time3 min
Views93K

Зона комфорта — это зло. Хоть и приятное, даже очень. Но зло. Особенно, если речь идет о саморазвитии и изучении языков. Если каждый день в работе использовать довольно простые лексику и грамматику с минимальными изменениями, есть большая вероятность, что вы начнете забывать всякие там Conditionals или Future Perfect. Конечно же, нужно поддерживать язык на должном уровне и развивать его, поэтому мы попросили наших преподавателей поделиться книгами, которые им в этом помогают. Так что готовьтесь к подборке для высоких уровней и не только!

Произношение


Ship or Sheep? An Intermediate Pronunciation Course

В этом пособии вы найдете неплохой тест, который покажет ваши слабые стороны (всякие там “сри” или “фри”). Даже если ничего подобного не обнаружится, учебник стоит пройти от начала до конца, и вот почему:
Читать дальше →
Total votes 20: ↑18 and ↓2+16
Comments21

Литература на выходные: 15 материалов по структурированию кода для разработчиков

Reading time5 min
Views27K
Одним из параметров оценки кода служит его чистота. Создатель языка моделирования UML Гради Буч (Grady Booch) писал:

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

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

Читать дальше →
Total votes 14: ↑12 and ↓2+10
Comments14

Решение проблем организации бизнес-логики в PHP или как пойти своим путем

Reading time12 min
Views16K
image Привет, Хабр! Не первый раз я пытаюсь написать эту статью, но давно уже есть желание поделиться опытом и люди просят.

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

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

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

Не буду гарантировать что изложенные решения это какая-то серебряная пуля, все нижеследующее всего лишь один из вариантов подхода к решению общих проблем. В нем есть и плюсы и минусы и со своей основной задачей этот подход справляется.
За подробностями прошу под кат.
Total votes 11: ↑9 and ↓2+7
Comments71

Watch Your Back: как выбрать городской рюкзак

Reading time6 min
Views26K
Современный городской рюкзак – это товарищ, которому приходится доверять самое ценное: ноутбук, планшет, смартфон, документы и бутылку прохладной воды (что в летнюю жару очень даже актуально). Это спутник, который целый день может провести у вас за спиной. Это отражение вашего стиля, в конце концов. Поэтому к выбору рюкзака стоит отнестись ответственно и учесть эргономику, комфорт ношения и дизайнерские характеристики. Сами судите, что для вас важнее, – или же попытайтесь найти среди описанных ниже новинок модель, в которой все три критерия сочетаются оптимально.

image
Читать дальше →
Total votes 26: ↑15 and ↓11+4
Comments100

Психология убеждения. Как убеждать других и уметь распознавать манипуляции

Reading time14 min
Views131K

Эта статья — некраткий конспект книги Роберта Чалдини «Психология убеждения». Будет полезна всем, кто имеет дело с людьми, продажами и бизнесом. Книга настолько полезна, что должна оказаться на полке каждого. Помимо того, что мы хотим влиять на окружающих, очень полезно знать, когда окружающие пытаются повлиять на нас. Внутри вы найдёте множество способов убеждения и, сразу после прочтения, будете с лёгкостью замечать, когда вами пытаются манипулировать.
Читать дальше →
Total votes 90: ↑67 and ↓23+44
Comments50

Bobby. Рюкзак особого назначения

Reading time8 min
Views151K
В мире существует довольно много компаний, производящих такой класс вещей, как рюкзаки. Ещё больше существует самих рюкзаков: для ноутбуков, для фотоаппаратов, для фотоаппаратов и ноутбуков, для дронов, для активного отдыха, для лежания овощем и т.д — только у нас на сайте отобрано более 50 моделей (и это именно в наличии). Казалось бы, рассказывать о них на Geektimes нет никакого смысла, рюкзаки и рюкзаки. Но сегодня про один всё же расскажем, так как внимания гиков он заслуживает совершенно точно: это новый Bobby от голландской компании XD-Design.

Total votes 48: ↑43 and ↓5+38
Comments136

Кроссплатформенный Open Source Time Tracker

Reading time7 min
Views70K

В этой статье я хочу рассказать о том, зачем мне понадобился тайм-трекер, как я его искал, почему не нашел и что из этого всего в итоге получилось.
Читать дальше →
Total votes 81: ↑74 and ↓7+67
Comments95

«Стань тупым». 10 советов по управлению IT стартапом от основателя сервиса Вирусдай

Reading time9 min
Views8K


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

Весь этот набор содержит в себе нужные знания и рецепты. Но это только инструмент, который вам поможет развить стартап до реального бизнеса. По моему же личному убеждению любой человек может превратить свой стартап в бизнес. Все что нужно для успеха — просто сделать достаточно. Ведь если говорить честно, то закрывшийся стартап — это не вина конкурентов, рынка или еще каких-то потусторонних сил. Во всем что случилось виноваты лично вы — это вы работали недостаточно упорно, знали недостаточно много, учились недостаточно усердно, реагировали недостаточно быстро и вели себя недостаточно жестко. Причина вашего провала – вы сами. Вы были недостаточно «тупы».
Читать дальше
Total votes 13: ↑12 and ↓1+11
Comments1

Почему вам НЕ стоит использовать AngularJs

Reading time12 min
Views248K
Много времени прошло с момента появления AngularJs (в масштабах веб-технологий конечно). Сейчас в интернетах есть огромное количество постов восхваляющих этот фреймворк до небес, что это манна небесная не иначе, а критики не так уж и много как он того заслуживает. Но такие статьи уже потихоньку начинают появляться, и меня это радует, надеюсь индустрия переболеет ангуляром так же, как переболела MooTools, Prototype, %какой-нибудь новый язык под JVM%, %другая-супер-революционная-технология%. Не знаю почему, но в IT-области такие революционные технологии, которые поднимают шум, а потом пропадают, появляются довольно часто. Хороший разработчик должен уметь отличать очередную модную технологию, от работающего инструмента. И для этого очень важно критически смотреть на вещи. Моя статья — это компиляция самых весомых выводов из других статей, и моих личных умозаключений. Ангуляр создает хороший вау-эффект, когда видишь его впервые: «ух ты, я написал ng-repeat, и реализовал эту логику одними тегами и все само обновляется!», но как только приходится реализовывать реальные приложения, а не очередной TODO-лист, то все становиться очень печально. Сразу хочу сказать, что фреймворк я знаю хорошо, даже больше чем мне хотелось бы его знать, я программировал на нем в течении 2 лет. И для следующего проекта я его точно не выберу, и это хорошо, все мы учимся на ошибках. Так что же не так с ангуляром? Тут нет однозначного ответа, слишком много разных недостатков, которые создают такой облик фреймворку. Если одним словом – непродуманная архитектура. Под катом я привожу конкретику, так что устраивайтесь поудобнее. ДА НАЧНЕТСЯ ХОЛЛИ ВАР!
Читать дальше →
Total votes 305: ↑242 and ↓63+179
Comments387

«Математика – один из видов искусства»: пост к столетию со дня рождения Мартина Гарднера

Reading time3 min
Views59K

Перевод поста Эда Пегга Младшего (Ed Pegg Jr) "Martin Gardner’s 100th Birthday"

Я думаю, содержание этого поста будет интересно всем, кто любит математику и ее красоту, всем, кто знаком с замечательными книгами и задачами Мартина Гарднера, а также будет полезно учителям, школьникам и студентам. Все ссылки в данном посте ведут на сайты Wolfram Demonstrations Project (коллекция бесплатных интерактивных демонстраций, созданных пользователями системы Mathematica на языке Wolfram Language с помощью технологии Computable Document Format (CDF), при этом для вас доступны исходные коды всех демонстраций, а значит, вы можете каждую из них скачать, изучить и изменить под себя) и Wolfram MathWorld (крупнейшая и самая авторитетная онлайн-энциклопедия по математике).

Gardner100_1.gif

Читать далее...
Total votes 78: ↑75 and ↓3+72
Comments18

Исследование виртуальных серверов с SSD дисками

Reading time5 min
Views34K


В последнее время SSD накопители стали заметно дешеветь и все чаще их можно увидеть как преимущество того или иного виртуального сервера. Например, тарифов с SSD дисками сейчас — 370 штук от 65 хостеров. Естественно, SSD диски намного дороже, чем диски других типов, поэтому для сохранения низкой стоимости услуги хостеры предлагают меньшее количество места за аналогичную цену по сравнению с SATA или SAS тарифами.

Я и мой друг amoskvin из https://theideahosting.com решили провести небольшое исследование дешевых тарифов на виртуальные серверы с SSD дисками. Хотелось бы поблагодарить всех хостеров, которые бесплатно предоставили виртуальные серверы для тестирования.

Для проведения тестирования была выбрана максимальная планка цены — 5 долларов за месяц. Единственное, сразу хочу заметить, что тестирование производилось в неспешном порядке и из-за колебаний курса валюты на момент публикации этой статьи планка в 5 долларов может быть немного сдвинутой, но общая идея осталась прежней: – протестировать хостеров и дешевые тарифы с SSD дисками.
Читать дальше →
Total votes 30: ↑27 and ↓3+24
Comments63
1
23 ...

Information

Rating
Does not participate
Registered
Activity