Хотелось бы разоблачить мифы, связанные с буквой Ё. Подчеркну, не поспорить в очередной раз, надо ее писать или нет, а просто привести факты, связанные с буквой Ё.
Пользователь
Памятка пользователям ssh
13 мин
1.5Mabstract: В статье описаны продвинутые функций OpenSSH, которые позволяют сильно упростить жизнь системным администраторам и программистам, которые не боятся шелла. В отличие от большинства руководств, которые кроме ключей и -L/D/R опций ничего не описывают, я попытался собрать все интересные фичи и удобства, которые с собой несёт ssh.
Предупреждение: пост очень объёмный, но для удобства использования я решил не резать его на части.
Оглавление:
Предупреждение: пост очень объёмный, но для удобства использования я решил не резать его на части.
Оглавление:
- управление ключами
- копирование файлов через ssh
- Проброс потоков ввода/вывода
- Монтирование удалённой FS через ssh
- Удалённое исполнение кода
- Алиасы и опции для подключений в .ssh/config
- Опции по-умолчанию
- Проброс X-сервера
- ssh в качестве socks-proxy
- Проброс портов — прямой и обратный
- Реверс-сокс-прокси
- туннелирование L2/L3 трафика
- Проброс агента авторизации
- Туннелирование ssh через ssh сквозь недоверенный сервер (с большой вероятностью вы этого не знаете)
+344
Вычислительная геометрия, или как я стал заниматься олимпиадным программированием. Часть 2
6 мин
144KВступление
Это вторая часть моей статьи посвящена вычислительной геометрии. Думаю, эта статья будет интереснее предыдущей, поскольку задачки будут чуть сложнее.
Начнем с взаимного расположения точки относительно прямой, луча и отрезка.
+23
Вычислительная геометрия, или как я стал заниматься олимпиадным программированием.Часть 1
8 мин
131KЗдравствуйте, уважаемые хабравчане! Это моя вторая статья, и мне хотелось бы поговорить о вычислительной геометрии.
Я являюсь студентом уже 4 курса математического факультета, и до того как я начал заниматься программированием, я считал себя математиком на 100 процентов.
В конце первого курса мой преподаватель по информатике, который занимается олимпиадным программированием, обратил на меня внимание. Им как раз не хватало одного математика в команду. Так потихоньку меня начали приучать к олимпиадному программированию. Скажу честно, для меня это было очень сложно: для человека, который узнал слово Delphi на первом курсе. Однако мой преподаватель оказался очень грамотным специалистом и нашел хороший подход ко мне. Он начал давать мне математические задачи, который я сначала решал чисто математически, а уже потом писал код (с грехом пополам).
Мне очень нравится подход моего преподавателя: «разберись с этой темой, а потом расскажи нам, да так чтоб мы все поняли».
Итак, первой на самом деле важной задачей, с которой мне поручили разобраться, было именно вычислительная геометрия, необходимо было разобраться в типичных задач этого раздела информатики. И я решил подойти к этой задаче со всей ответственностью.
Я помню, как долго мучился с этими задачами, чтобы они прошли все тесты на сайте informatics.mccme. Зато теперь я очень рад, что прошел через все испытания и знаю, что же такое задачи вычислительной геометрии.
Немного истории
Я являюсь студентом уже 4 курса математического факультета, и до того как я начал заниматься программированием, я считал себя математиком на 100 процентов.
В конце первого курса мой преподаватель по информатике, который занимается олимпиадным программированием, обратил на меня внимание. Им как раз не хватало одного математика в команду. Так потихоньку меня начали приучать к олимпиадному программированию. Скажу честно, для меня это было очень сложно: для человека, который узнал слово Delphi на первом курсе. Однако мой преподаватель оказался очень грамотным специалистом и нашел хороший подход ко мне. Он начал давать мне математические задачи, который я сначала решал чисто математически, а уже потом писал код (с грехом пополам).
Мне очень нравится подход моего преподавателя: «разберись с этой темой, а потом расскажи нам, да так чтоб мы все поняли».
Итак, первой на самом деле важной задачей, с которой мне поручили разобраться, было именно вычислительная геометрия, необходимо было разобраться в типичных задач этого раздела информатики. И я решил подойти к этой задаче со всей ответственностью.
Я помню, как долго мучился с этими задачами, чтобы они прошли все тесты на сайте informatics.mccme. Зато теперь я очень рад, что прошел через все испытания и знаю, что же такое задачи вычислительной геометрии.
+61
Почему сумма трёх кубов – это такая сложная математическая задача
5 мин
33KПеревод
Тяжело искать ответы в бесконечном пространстве. Математика уровня старших классов может помочь вам сузить область поисков.
Учитывая, что люди изучают свойства чисел тысячи лет, можно было бы решить, что нам известно всё о числе 3. Однако недавно математики обнаружили нечто новое касательно числа 3: третий способ выразить это число в виде суммы трёх кубов. Задача записи числа через сумму трёх кубов целых чисел оказывается неожиданно интересной. Легко показать, что большую часть чисел нельзя записать в виде одного куба или суммы из двух кубов, но существует гипотеза, что большую часть чисел можно записать в виде суммы из трёх кубов. Однако найти эти кубы оказывается иногда чрезвычайно сложно.
К примеру, нам было известно, что число 3 можно записать в виде 13 + 13 + 13, а также в виде 43 + 43 + (-5)3, однако более 60 лет математиков интересовал вопрос, нет ли ещё одного способа сделать это. И в этом сентябре Эндрю Букер и Эндрю Сазерленд, наконец, нашли и третий способ:
+47
Практическая атака на беспроводную сеть с WEP шифрованием
7 мин
26KТеорию и процесс атаки хорошо описал юзер n3m0 в статьях «Атаки на беспроводные сети». Но практика там описана достаточно слабо.
В данной статье будет описан практический процесс атаки на беспроводную сеть с шифрованием WEP, используя пакет aircrack-ng и операционную систему OpenSuse.
В данной статье будет описан практический процесс атаки на беспроводную сеть с шифрованием WEP, используя пакет aircrack-ng и операционную систему OpenSuse.
+88
Прощай HTML, привет QML
3 мин
50KКак можно создать web приложение без использования HTML? Для этого нам понадобится: новый браузер, QML и back-end на Java.
+27
Дозиметр для Серёжи. Часть III. Народный радиометр
22 мин
25KТуториал
Самой частой претензией в комментариях к прошлой моей статье была претензия в «радиофобии». Хотя я в принципе не понимаю, какой деструктивный общественный посыл может нести это «заболевание» (в отличие от той же вакционофобии или какой-нибудь аблютофобии). Наоборот, чем больше людей будет интересоваться этой темой, тем меньше вероятность какой-то инцидент скрыть, а факты — переврать. Вторая претензия — необходимость возиться с электронными компонентами (а то и силовой электроникой), что под силу далеко не каждому. Поэтому сегодня под катом мой ответ на претензии и, одновременно, апогей идеи «меряем радиацию просто и доступно». Читаем, кладем в закладки и… обязательно распространяем среди максимально возможного количества знакомых и друзей. Искренне надеюсь, что Хабр станет началом «пути в народ» простого и достаточно точного устройства для определения аномальной радиоактивности (вполне сравнимого с простейшими бытовыми сигнализаторами). Тем более, что для его создания основной инструмент — прямые руки и светлая голова (а это, в отличие от лишних денег, пока у нашего брата имеется).
+67
Файл дескриптор в Linux с примерами
14 мин
101KОднажды, на одном интервью меня спросили, что ты будешь делать, если обнаружишь неработающий сервис из-за того, что на диске закончилось место?
Конечно же я ответил, что посмотрю, чем занято это место и если возможно, то почищу место.
Тогда интервьюер спросил, а что если на разделе нет свободного места, но и файлов, которые бы занимали все место, ты тоже не видишь?
На это я сказал, что всегда можно посмотреть открытые файл дескрипторы, например командой lsof и понять какое приложение заняло все доступное место, а дальше можно действовать по обстоятельствам, в зависимости от того, нужны ли данные.
Интервьюер прервал меня на последнем слове, дополнив свой вопрос: «Предположим, что данные нам не нужны, это просто дебаг лог, но приложение не работает из-за того, что не может записать дебаг»?
«окей», — ответил я, «мы можем выключить дебаг в конфиге приложения и перезапустить его».
Интервьюер возразил: «Нет, приложение мы перезапустить не можем, у нас в памяти все еще хранятся важные данные, а к самому сервису подключены важные клиенты, которых мы не можем заставлять переподключаться заново».
«ну хорошо», сказал я, «если мы не можем перезапускать приложение и данные нам не важны, то мы можем просто очистить этот открытый файл через файл дескриптор, даже если мы его не видим в команде ls на файловой системе».
Интервьюер остался доволен, а я нет.
Тогда я подумал, почему человек, проверяющий мои знания, не копает глубже? А что, если данные все-таки важны? Что если мы не можем перезапускать процесс, и при этом этот процесс пишет на файловую систему в раздел, на котором нет свободного места? Что если мы не можем потерять не только уже записанные данные, но и те данные, что этот процесс пишет или пытается записать?
Конечно же я ответил, что посмотрю, чем занято это место и если возможно, то почищу место.
Тогда интервьюер спросил, а что если на разделе нет свободного места, но и файлов, которые бы занимали все место, ты тоже не видишь?
На это я сказал, что всегда можно посмотреть открытые файл дескрипторы, например командой lsof и понять какое приложение заняло все доступное место, а дальше можно действовать по обстоятельствам, в зависимости от того, нужны ли данные.
Интервьюер прервал меня на последнем слове, дополнив свой вопрос: «Предположим, что данные нам не нужны, это просто дебаг лог, но приложение не работает из-за того, что не может записать дебаг»?
«окей», — ответил я, «мы можем выключить дебаг в конфиге приложения и перезапустить его».
Интервьюер возразил: «Нет, приложение мы перезапустить не можем, у нас в памяти все еще хранятся важные данные, а к самому сервису подключены важные клиенты, которых мы не можем заставлять переподключаться заново».
«ну хорошо», сказал я, «если мы не можем перезапускать приложение и данные нам не важны, то мы можем просто очистить этот открытый файл через файл дескриптор, даже если мы его не видим в команде ls на файловой системе».
Интервьюер остался доволен, а я нет.
Тогда я подумал, почему человек, проверяющий мои знания, не копает глубже? А что, если данные все-таки важны? Что если мы не можем перезапускать процесс, и при этом этот процесс пишет на файловую систему в раздел, на котором нет свободного места? Что если мы не можем потерять не только уже записанные данные, но и те данные, что этот процесс пишет или пытается записать?
+136
Печальная судьба спецификаторов формата функции printf для символов Юникода в Visual C++
4 мин
12KПеревод
Поддержка Юникода в Windows появилась раньше, чем в большинстве остальных операционных систем. Из-за этого многие проблемы, связанные с представлением символов, в Windows решались не так, как в других системах, разработчики которых отложили внедрение нового стандарта до лучших времён [1]. Самый показательный пример: в Windows для представления символов Юникода используется кодировка UCS-2. Она была рекомендована Консорциумом Юникода, поскольку версия 1.0 поддерживала только 65 536 символов [2]. Пять лет спустя Консорциум передумал, но к тому времени менять что-то в Windows было уже поздно, так как на рынок уже были выпущены системы Win32s, Windows NT 3.1, Windows NT 3.5, Windows NT 3.51 и Windows 95 — все они использовали кодировку UCS-2 [3].
Но сегодня мы поговорим о строках форматирования функции printf.
Но сегодня мы поговорим о строках форматирования функции printf.
+59
А давайте о шпаргалках?
8 мин
26KВы когда-нибудь задумывались над тем, что все преподаватели делятся на: «тех, которые дают списывать» и «тех, которые списывать не дают».
Когда-то я искренне верила, что преподаватель не видит нервно блуждающих под партой рук, не слышит шелест заготовленных шпор и треск вырываемых из учебников страниц, не замечает, что ваш идеально написанный ответ не вяжется с тем трусливым сбивчивым рассказом, который вы произносите вслух.
Когда-то я искренне верила, что преподаватель не видит нервно блуждающих под партой рук, не слышит шелест заготовленных шпор и треск вырываемых из учебников страниц, не замечает, что ваш идеально написанный ответ не вяжется с тем трусливым сбивчивым рассказом, который вы произносите вслух.
+29
Легкий способ заработать на Bug Bounty
5 мин
24KНаверняка вы уже не раз слышали выражение «багхантинг», и я уверен, что вы бы не отказались заработать пару-тройку сотен (а то и тысяч) долларов, найдя в чужой программе потенциальную уязвимость. В этой статье я расскажу о трюке, который поможет исследовать проекты с открытым исходным кодом на наличие таких уязвимостей.
+33
Древности: Nokia N900 — телефон, который отличается
10 мин
39KКамера у этого телефона закрыта шторкой. Если ее сдвинуть — автоматически запускается приложение для съемки. Экран можно погасить отдельным подпружиненным рычагом — это не считая того, что он включается и выключается от выдвижной клавиатуры. Кнопка включения тоже есть, но она именно что включает телефон. Или выключает. Кнопка для фотосъемки также отдельная, двухпозиционная, как у «взрослых» фотоаппаратов.
Nokia N900 — это уникальный, единственный в своем роде смартфон, не похожий как на обычную продукцию финской компании в первом десятилетии 21-го века, так и на все последующие устройства. В 2009 году это был еще и один из самых мощных смартфонов на рынке, но рынок постепенно начинал понимать, что дело не только в крутизне железа, требуются еще и сервисы. Надо было сделать пользователю удобно, и вот с этим у N900 не то, чтобы совсем не вышло, но…
В моем собственном хит-параде старых устройств Nokia N900 уступает разве что клавиатурному КПК Psion 5MX. Его создавали технари, и делали так, чтобы удобно было не пользователю, а самим технарям. Сообщество разработчиков под платформу Maemo (во многом благодаря открытой софтверной архитектуре) живо до сих пор. N900 был моим основным смартфоном всего год. Был обменян на один из первых Samsung Galaxy, потом куплен еще раз, год трудился на полке, перенаправляя SMS на почту. После того, как у него отвалился чип памяти, я купил третий экземпляр, уже не для дела, а просто как музейный экспонат. Как напоминание, что Nokia могла сделать мобильную платформу не хуже, чем iOS и Android. Если бы по-настоящему захотела.
Nokia N900 — это уникальный, единственный в своем роде смартфон, не похожий как на обычную продукцию финской компании в первом десятилетии 21-го века, так и на все последующие устройства. В 2009 году это был еще и один из самых мощных смартфонов на рынке, но рынок постепенно начинал понимать, что дело не только в крутизне железа, требуются еще и сервисы. Надо было сделать пользователю удобно, и вот с этим у N900 не то, чтобы совсем не вышло, но…
В моем собственном хит-параде старых устройств Nokia N900 уступает разве что клавиатурному КПК Psion 5MX. Его создавали технари, и делали так, чтобы удобно было не пользователю, а самим технарям. Сообщество разработчиков под платформу Maemo (во многом благодаря открытой софтверной архитектуре) живо до сих пор. N900 был моим основным смартфоном всего год. Был обменян на один из первых Samsung Galaxy, потом куплен еще раз, год трудился на полке, перенаправляя SMS на почту. После того, как у него отвалился чип памяти, я купил третий экземпляр, уже не для дела, а просто как музейный экспонат. Как напоминание, что Nokia могла сделать мобильную платформу не хуже, чем iOS и Android. Если бы по-настоящему захотела.
+47
Можно ли рендерить реалистичные изображения без чисел с плавающей запятой?
19 мин
23KПеревод
Введение
«Что получится, если мы заменим числа с плавающей запятой на рациональные числа и попытаемся отрендерить изображение?»
Такой вопрос я задал себе после размышлений над твитом исследователя и преподавателя компьютерной графики Моргана Макгвайра. Он рассуждал о том, насколько сильно студенты компьютерных наук удивляются, когда впервые узнают, что для хранения привычных нам чисел с плавающей запятой в современных компьютерах нужно идти на компромиссы. И эти компромиссы делают сложными простые задачи, например, проверку принадлежности точки треугольнику. Проблема, разумеется, заключается в том, что проверка нахождения четырёх точек в одной плоскости (копланарности) с помощью определителя или какого-нибудь векторного умножения (а на самом деле это одно и то же) никогда не даст значение, точно равное нулю, чего требуют эти математические методы. Даже если бы настоящие вычисления нахождения на одной плоскости были бы точны, те же компромиссы с точностью почти с вероятностью в 1,0 дали бы ответ, что сами четыре точки не копланарны.
Это зародило во мне мысль — если допустить, что все входящие данные рендерера (координаты вершин, 3D-преобразования и т.д.) были бы заданы как рациональные числа, то создавали бы все операции, от создания луча, обхода ускоряющей структуры и до пересечения лучей с треугольниками только рациональные числа? Если это было бы так, то мы бы смогли выполнять проверку копланарности совершенно точно! Возможно, вы зададитесь вопросом, почему 3D-сцена, выраженная в рациональных числах должна давать результаты тоже только в рациональных числах…
Простая сцена, трассировка пути в которой выполнена рациональной арифметикой. Здесь используется система чисел «с плавающей чертой дроби», а не числа с плавающей запятой.
+98
Модель натурального ряда чисел и его элементов. Ромбы
11 мин
3.3KRecovery Mode
В этой работе сохраняется базовая Г2± – модель, но принимается другая организация ее клеток (другой рисунок). Поверх первичной решетки с клетками размера 1×1 изображается более крупная сетка – сетка ромбов, а также рассматривается сетка центров ромбов (СЦР). Последняя сетка не изображается, чтобы не перегружать линиями рисунок с ромбами. Мы не будем повторять определения и понятия, которые подробно излагались в предшествующих работах, но дадим указывающие на эти работы ссылки.
+5
Вот зачем нужна школьная алгебра
4 мин
120KОбычно на вопрос «зачем нужна математика?» отвечают что-то вроде «гимнастика для ума». На мой взгляд, этого объяснения недостаточно. Когда человек выполняет физические упражнения, то он знает точное название групп мышц, которые при этом развиваются. Но разговоры про математику остаются слишком абстрактными. Какие конкретно «мышцы ума» тренируются школьной алгеброй? Она ведь совсем не похожа на настоящую математику, в которой делаются великие открытия. Что дает умение искать производную каких-то запутанных функций?
Преподавание программирования слабым студентам привело меня к более точному ответу на вопрос «зачем?». В статье я постараюсь донести его вам.
Преподавание программирования слабым студентам привело меня к более точному ответу на вопрос «зачем?». В статье я постараюсь донести его вам.
+66
Преобразуем изображение в звук — что можно услышать?
5 мин
30KПривет Хабр.
В недавней публикации здесь на сайте описывалось устройство, позволяющее незрячим людям «видеть» изображение, преобразуя его с помощью звуковых волн. С технической точки зрения, в той статье не было никаких деталей вообще (а вдруг украдут идею за миллион), но сама концепция показалась интересной. Имея некоторый опыт обработки сигналов, я решил поэкспериментировать самостоятельно.
Что из этого получилось, подробности и примеры файлов под катом.
В недавней публикации здесь на сайте описывалось устройство, позволяющее незрячим людям «видеть» изображение, преобразуя его с помощью звуковых волн. С технической точки зрения, в той статье не было никаких деталей вообще (
Что из этого получилось, подробности и примеры файлов под катом.
+20
Грязные трюки в коде игр
13 мин
111KПеревод
[Когда график поджимает и проект уже пора выпускать, программисты могут прибегать к грязным трюкам, чтобы уже наконец выпихнуть игру за дверь. В этой статье собрано девять примеров таких «костылей» из реальной жизни.]
Обычно программисты — это методичные и аккуратные существа, всеми силами стремящиеся к чистому и красивому коду. Но когда ставки высоки, идеальный график разваливается на части, а игру пора выпускать, принцип «закончить любой ценой» может оказаться важнее элегантности.
В подобных случаях измученный и перерабатывающий программист скорее всего проигнорирует оптимальный подход, заменив его менее приемлемым решением, чтобы просто покончить с игрой. Мы собрали девять историй настоящих разработчиков о тех моментах, когда они не могли уложиться в график и им приходилось для спасения проекта прибегать к хитростям.
+141
Минимальный возможный шрифт
9 мин
37KПеревод
Задача: используя наименьшее возможное количество ресурсов, отрендерить осмысленный текст.
- Насколько маленьким может быть читаемый шрифт?
- Сколько памяти понадобится, чтобы его хранить?
- Сколько кода понадобится, чтобы его использовать?
Посмотрим, что у нас получится. Спойлер:
+96
Эксплуатация cookie-based XSS | $2300 Bug Bounty story
7 мин
15KУже на протяжении довольно длительного времени я охочусь за уязвимостями на платформе HackerOne, выделяю некоторое количество времени вне основной работы, чтобы проверить любимые и новые программы. Бесчисленное количество раз приходилось натыкаться на cookie-based XSS уязвимость, которая и станет главной героиней этой статьи. Данный тип уязвимости возникает, когда значение параметра cookie рефлектится на страницу. По умолчанию они считаются self-XSS, если мы, в свою очередь, не докажем их опасность. Собственно, сегодня я расскажу, как эксплуатировать cookie-based XSS уязвимости, а также приведу пример из тестирования одной компании, от которой я получил $7300 в целом за исследование.
+36
Информация
- В рейтинге
- Не участвует
- Откуда
- Москва, Москва и Московская обл., Россия
- Зарегистрирована
- Активность