Обновить

Разработка

Сначала показывать
Период
Уровень сложности

Хватит спрашивать у синьоров джуниорские вопросы на собеседованиях

Уровень сложностиПростой
Время на прочтение2 мин
Охват и читатели32K

Я работаю программистом последние 11 лет: первые 5 лет как PHP-разработчик, а последние 6 лет как Go-разработчик. Недавно я сходил на с десяток собеседований, и они меня очень сильно разочаровали.

Читать далее

Пиши простой код

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели34K

И это решит 95% проблем типичного стартапа. Как-то так повелось, что по всему СНГ и его окрестностям на работу набирают зумеров с колоссальным опытом в три года, и они начинают создавать идеальные архитектуры. Да, каждый из вас, как только получает возможность взять на себя хоть малейшую ответственность, сразу вспоминает все прочитанные и не прочитанные книги и пилит свою уникальную архитектуру, непохожую ни на что.

Читать далее

Исповедь ничтожества

Время на прочтение9 мин
Охват и читатели126K

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

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

 P.P.S. Очень много текста внутри. 

Читать далее

Как хранить данные в png, не привлекая внимания санитаров

Время на прочтение13 мин
Охват и читатели72K

Всё началось с мема, который вы видите выше.

Сначала я посмеялся. А потом задумался: может ли быть так, что скриншот базы равноценен её снэпшоту?

Для этого у нас должно быть такое графическое представление базы, которое 1 к 1 отображает данные и структуру. Если сделать скриншот такого представления, из него можно восстановить базу.

Или... графическое представление и должно быть базой!

Это как?

Удаленная работа — это не «фриланс»

Время на прочтение5 мин
Охват и читатели137K


Сегодня на глаза попался старый вопрос "Почему работодатель предпочитает нанимать веб-разработчика в офис?": habrahabr.ru/qa/22292. Вопрос был задан еще в 2012 году, но, на мой взгляд, ситуация с тех пор не сильно изменилась.

Коллеги, тут есть серьезное недопонимание, которое давно пора устранить.

Многие, как мне кажется, представляют себе фрилансера примерно так:
  • Приходит на какую-то отдельную небольшую задачу, выполняет ее и уходит.
  • Работает над несколькими мелкими проектами одновременно. Либо имеет постоянную работу, а фрилансером просто подрабатывает в оставшееся время.
  • Его не беспокоит проект в целом. Только то, за что он отвечает.
  • Огораживает себя техническими заданиями. И из-за каждой новой плюшки может возникнуть конфликт.
  • Работает когда хочет. С ним сложно связаться.

А на самом деле

Школьные поделки: Battlecruiser & DeathCraft

Время на прочтение8 мин
Охват и читатели73K
ОСТОРОЖНО! Концентрированная ностальгия! Описанное здесь морально устарело много-много лет назад. Более того, оно устарело до того, как было реализовано. Из статьи вы не узнаете ничего нового.
В давние-давние времена, когда Embarcadero CodeGear Borland Delphi RAD Studio C++ Builder был версии 4, когда Autodesk 3ds Max Discreet 3dsmax 3D Studio Max был версии 3, когда 80 Гб и 200 МГц были не в холодильниках, а в компьютерах, когда Интернет был неведомым и таинственным существом, каждое прикосновение к которому было магическим… я учился в старших классах школы и учился программировать. А также моделировать. И ещё всякое-разное по мелочи.
Подозрительный скриншот:


Много картинок и ностальгии

Официальный праздник День программиста

Время на прочтение1 мин
Охват и читатели838
Подпись этого приказа, я думаю это вопрос нескольких дней. Ура товарищи! Датой празднования выбран 256 день года 13 сентября (в високосный год 12 сентября). Еще раз ура )))

Истинные причины блокировок сайтов. Исследование по открытым данным

Время на прочтение4 мин
Охват и читатели121K
капитан очевидность
Около двух лет назад государство взяло курс на активное вмешательство в интернет-пространство и его регулирование. Самое время подвести итоги постепенного усиления цензуры в интернете.

Если вы помните, летом 2012 года Госдума внезапно приняла поправки в 139-ФЗ «о защите детей от вредной информации».Это объяснялось необходимостью защитить наших детишек от педофилов и наркоманов, а также от тех, кто их склоняет к совершению самоубийств. Закон, конечно, содержал гарнир в виде маркировки продукции для детей знаками 18+ и т.п., но вот мясцо этих поправок было в виде механизма цензуры посредством блокировки сайтов.

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

Итак, давайте посмотрим, действительно ли введение цензуры было продиктовано необходимостью защиты наших детей.
Читать дальше →

Уводим чужие cookies c mail.ru

Время на прочтение4 мин
Охват и читатели100K
Не так давно прочитал на Хабре пост, в котором предлагалось посетить бесплатное мероприятие, посвященное вопросам информационной безопасности. Так как мероприятие проходило в моем городе, я решил, что мне нужно непременно туда сходить. Первое занятие было посвящено уязвимостям на сайтах типа XSS. После занятия я решил, что нужно закрепить полученные знания в реальных условиях. Выбрал для себя несколько сайтов, которые относятся к моему городу и начал во все формы пытаться воткнуть свой скрипт. В большинстве случаев скрипт отфильтровывался. Но бывало так, что «алерт» и срабатывал, и появлялось мое сообщение. О найденной уязвимости сообщал администраторам, и они быстро все исправляли.

В один из таких дней проверяя свежую почту на mail.ru мне на глаза попалась форма для поиска писем в почтовом ящике. Изредка я пользовался этим поиском, чтобы найти что-то нужное в куче своих старых писем. Ну, а так как я в последние пару дней вставлял свой «алерт» практически везде куда только можно было, рука рефлекторно потянулась к этой форме поиска. Набрал код своего скрипта и нажал Enter. Каково же было мое удивление, когда на экране я увидел до боли знакомое сообщение…

image

Читать дальше →

10 приемов, разрушающих хрупкую красоту кода

Время на прочтение19 мин
Охват и читатели103K
Статья приводится в сокращении из-за ограничения на объем материала.

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

Последние несколько лет я собирал приемы программирования, разрушающие в программном коде его утонченную красоту:
  1. Объявление всех переменных в начале программы;
  2. Возврат результата функции через ее параметр;
  3. Отсутствие локальных функций;
  4. Отсутствие else if;
  5. Использование параллельных массивов;
  6. Хранение размера массива в отдельной переменной;
  7. Доступ к свойствам объекта через obj.getProperty() и obj.setProperty(value);
  8. Использование рекурсии для вычисления факториалов и Чисел Фибоначчи;
  9. Отсутствие именованных параметров функции;
  10. Невозможность объявления объектов «на лету».
Наверняка, в некоторых местах вы будете со мной несогласны — ведь чувство красоты у всех разное.


Объявление всех переменных в начале программы


В двух словах:

Переменные должны объявляться в начале логического блока, в котором они используются, а НЕ в начале функции или программы.


Читать дальше →

Что делает ChatGPT… и почему это работает?

Уровень сложностиСредний
Время на прочтение75 мин
Охват и читатели186K

То, что ChatGPT может автоматически генерировать что-то, что хотя бы на первый взгляд похоже на написанный человеком текст, удивительно и неожиданно. Но как он это делает? И почему это работает? Цель этой статьи - дать приблизительное описание того, что происходит внутри ChatGPT, а затем исследовать, почему он может так хорошо справляться с созданием более-менее осмысленного текста. С самого начала я должен сказать, что собираюсь сосредоточиться на общей картине происходящего, и хотя я упомяну некоторые инженерные детали, но не буду глубоко в них вникать. (Примеры в статье применимы как к другим современным "большим языковым моделям" (LLM), так и к ChatGPT).

Читать далее

Осторожнее с редактированием bash-скриптов

Время на прочтение2 мин
Охват и читатели66K
Предположим, я написал такой bash-скрипт с названием delay.sh. Как думаете, что он делает?

#!/bin/bash
sleep 30
#rm -rf --no-preserve-root /
echo "Time's up!"

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

Представьте, что я снова запускаю этот скрипт, но теперь мне не хочется ждать 30 секунд — это слишком долго. Я открываю вторую консоль, меняю sleep 30 на sleep 3, затем сохраняю файл. Как думаете, что будет теперь?

Ну, через 30 секунд скрипт удалит все мои файлы.
Читать дальше →

Онлайн игра с реальными RC роботами в Чернобыле. Часть 2

Время на прочтение9 мин
Охват и читатели63K
Это продолжение статьи «Как мы запустили роботов в маленький Чернобыль» про игровую концепцию Remote Reality.

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

Выход на Kickstarter


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

image

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

Ближайшие события

Взлет и падение начинающего фрикера

Время на прочтение5 мин
Охват и читатели88K
Я долго собирался написать что-нибудь эдакое на хабр, вынашивал идеи всяких статей на очень умные темы. Но вместо этого я сейчас опишу один автобиографичный эпизод, которым я очень даже горжусь в техническом плане, но о котором безумно сожалею в моральном.

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

Рейтрейсер на JavaScript

Время на прочтение8 мин
Охват и читатели22K
TitleImage

Знаете ли вы что такое рейтрейсер? Это программа которая рисует трёхмерную сцену на экране так, как её бы увидели вы. Конечно, не совсем так, но некоторые рейтрейсеры умеют рисовать очень правдоподобные картинки, например как в "Аватаре".

Идея рейтрейсера очень простая и в этой статье я раcскажу как устроен этот алгоритм и даже напишу его на JavaScript. Картинки и пример прилагаются.

Читать дальше →

Металлолом наносит ответный удар

Время на прочтение11 мин
Охват и читатели126K
Мы многого не знали про железнодорожные вагоны:
  • Вагоны в поезде не умеют обгонять друг друга. Но обгоняют.
  • Один из вагонов обычно не может взять и переехать на параллельный путь.
  • Считается, что вагоны одинаковой типовой длины. Но это не гарантирует, что последний будет в одном и том же месте, если выравнивать первый.

И, наконец, знакомьтесь, вагон, который приехал к нам по железной дороге:

image

Наши коллеги из НЛМК в какой-то момент сделали анализ металлолома в вагонах. Вагон фотографируется по мере разгрузки по слоям, потом приходит модель и оценивает засорённость и качество лома. Мы съездили к ним в гости, посмотрели и решили внедрить у себя.

В этот момент и проявилась разница между тем, что бывает в теории и на практике. Точнее, она проявлялась несколько раз по ходу процесса, что доставляло нам массу радости.
Читать дальше →

Лучший язык программирования

Время на прочтение6 мин
Охват и читатели112K

Вопрос, который часто задают начинающие программисты — какой язык программирования изучать? Вопрос звучит разумно. Хочется выбрать самый лучший, чтобы потом не пришлось переучиваться.

Можно ли на него ответить?

Читать далее

Опасное видео: как я нашёл уязвимость в видеохостингах и не умер через 7 дней

Время на прочтение6 мин
Охват и читатели106K


Всем привет! Я Максим Андреев, программист бэкенда Облака Mail.Ru. В свободное время я люблю искать баги. В сегодняшнем посте я хочу рассказать об одной довольно интересной уязвимости, которую я нашёл и зарепортил в bug bounty нескольких крупных компаний, за что получил солидное вознаграждение. Уязвимость заключается в следующем: если сформировать специальный видеофайл и загрузить его на сервер, то:

  • можно получить на нём SSRF;
  • можно получить local file read;
  • если пользователь скачает этот файл, то автоматически будет подвержен уязвимостям, даже если его не откроет: можно будет получить доступ к данным на компьютере пользователя и узнать его имя.

Читать дальше →

Шпионские гаджеты от АНБ

Время на прочтение10 мин
Охват и читатели400K
imageСреди документов опубликованных Эдвардом Сноуденом, бывшим сотрудником ЦРУ и Агентства национальной безопасности США, были обнаружены материалы описывающие некоторые детали технологий шпионажа используемых АНБ. Список программных и аппаратных средств оформлен в виде небольшого каталога. Всего сорок восемь страниц отмеченных грифами «Секретно» и «Совершенно секретно», на которых дано краткое описание той или иной технологии для слежки. Данный список не является исчерпывающим. Представлены техники связанные с получением скрытого доступа к вычислительной технике и сетям, а также способы и устройства радиоэлектронной разведки связанные с мобильной связью и оборудование для наблюдения. В этой статье я расскажу об этих методах шпионажа, далее будет четыре дюжины слайдов(осторожно, трафик).
Узнать больше

Забавляемся с хешами

Время на прочтение5 мин
Охват и читатели91K
Привет. Я хочу показать вам небольшой фокус. Для начала вам потребуется скачать архив с двумя файлами. Оба имеют одинаковый размер и одну и ту же md5 сумму. Проверьте никакого обмана нет. Md5 хеш обоих равен ecea96a6fea9a1744adcc9802ab7590d. Теперь запустите программу good.exe и вы увидите на экране следующее.
Попробуйте запустить программу evil.exe.
Что-то пошло не так? Хотите попробовать сами?
Тогда добро пожаловать под кат.