Рубрика «код» - 7

Пентестер (тестировщик на проникновение) рассказывает, как ему удалось найти баг в загрузке файлов и проникнуть на сервер платежной системы PayPal.

image

Привет всем!

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

На самом деле это был довольно простенький взлом, направленный на проверку уязвимости (так называемый POC). Единственный момент, с которым мне повезло — поиск и успешное определение уязвимого домена.
Читать полностью »

Микрооптимизации в коде

Как правило, при обсуждении диагностических возможностей PVS-Studio за кадром остаются рекомендации, выдаваемые анализатором по поводу микрооптимизаций Си и Cи++ кода. Конечно, микрооптимизации не так важны, как диагностики выявляющие ошибки, но про них тоже интересно поговорить.
Читать полностью »

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

image

Люди часто спрашивают меня, как я начал кодить и всегда удивляются, узнавая, что научился я после 30.

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

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

image

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

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

Команда Reddit постоянно развертывает код. Все члены команды разработки регулярно пишут код, который перепроверяется самим автором, проходит проверку со стороны, чтобы после отправиться в «продакшн». Еженедельно мы делаем не менее 200 «деплоев», каждый из которых обычно занимает в общей сложности менее 10 минут.

Система, которая обеспечивает все это, развивалась на протяжении многих лет. Давайте посмотрим, что изменилось в ней за все это время, а что осталось неизменным.

Начало истории: стабильные и повторяющиеся деплои (2007-2010)

Вся имеющаяся у нас сегодня система выросла из одного зернышка — Perl-скрипта под названием push. Он был написан давно, в совсем другие для Reddit времена. Вся наша техническая команда тогда была настолько мала, что спокойно помещалась в одну небольшую «переговорку». Мы тогда еще не пользовались AWS. Сайт работал на конечном количестве серверов, и любые дополнительные мощности надо было добавлять вручную. Все работало на одном крупном, монолитном Python-приложении под названием r2.
Читать полностью »

Как поменьше беспокоиться о собственной бездарности - 1

Только что я столкнулся с еще одним проявлением синдрома самозванца: «Я правда разработчик — или просто хорошо гуглю?»

Далее следовал ответ, в котором я, однако, не увидел главного — поэтому ответить придется мне: слишком уж многие боятся без каких-либо оснований.

Переведено в Alconost

Если информацию легко найти, это не делает человека глупым

Частенько мне доводится слышать одну историю — полагаю, подлинность ее сомнительна, но, как бы там ни было, суть такова. Когда у Эйнштейна попросили номер телефона, он полез его искать и сказал: «Зачем запоминать то, что можно найти менее чем за две минуты?»

Читать полностью »

Зло в функциях сравнения
Возможно, читатели помнят мою статью под названием «Эффект последней строки». В ней идёт речь о замеченной мной закономерности: ошибка, чаще всего, допускается в последней строке однотипных блоков текста. Теперь я хочу рассказать о новом интересном наблюдении. Оказывается, программисты тяготеют к тому, чтобы допустить ошибку в функциях сравнения двух объектов. Такое утверждение выглядит неправдоподобным, однако, я покажу огромное количество примеров ошибок, которые шокируют читателя. Читайте новое исследование, будет интересно и страшно.
Читать полностью »

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

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

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

Код, использующий неявное поведение, может быть основан на каком-нибудь недокументированном, но уже реализованном функционале. Например, в мире написана целая куча НЕВЕРНОГО кода, который полагается на то, что функция файловой системы, возвращающая список директорий, вернёт их в отсортированном по алфавиту порядке. Это и вправду часто работает именно так, но ровно до того момента, пока не ломается по «непонятным» причинам. А на самом деле просто никто никогда этой сортировки не гарантировал.
Читать полностью »

Простая ошибка при кодировании — не значит нестрашная ошибка - 1
Популяризируя статический анализатор кода PVS-Studio, мы обычно пишем статьи для программистов. Однако, на некоторые вещи программисты смотрят одностороннее. Именно поэтому и существуют менеджеры программных проектов, которые могут управлять процессом развития проекта направлять его в нужное русло. Я решил написать несколько статей, целевой аудиторией которых являются менеджеры программных проектов. Эти статьи помогут им лучше ориентироваться в вопросах использования методологии статического анализа кода. Сейчас мы рассмотрим ложный постулат: «ошибки кодирования несущественны».
Читать полностью »

imageБазовая концепция блокчейна довольно проста: речь идет о распределенной базе данных, поддерживающей постоянно растущий список упорядоченных записей. Запутаться, однако, легко, поскольку всякий раз, когда мы говорим о блокчейнах, мы рассматриваем их с позиции задач, которые пытаемся решить и потому нередко начинаем подмешивать в это определение другие, очень близкие ему понятия. Это справедливо и в случае с популярными блокчейн проектами, такими, как Биткойн и Эфириум. Термин «блокчейн» обычно тесно связан с такими концепциями, как транзакции, умные контракты или криптовалюты.

Все это оправданно, но все же существенно усложняет процесс понимания принципа работы блокчейнов, особенно с точки зрения программного обеспечения с открытым исходным кодом. В этом материале я покажу вам крайне простой блокчейн, написание которого потребовало всего 200 строк Javascript-кода. Я назвал его NaiveChain.

Структура блока

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

На днях мы наткнулись на интересную статью на блог-платформе Medium, речь в которой идет о свежем проекте компании Fog Creek — Glitch (с английского «глюк», «сбой программы»). Бета-версия проекта стартовала в декабре 2016 года, правда, под другим названием, но об этом позже.

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

Glitch — новый подход к разработке приложений - 1

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


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js